C语⾔实现⼀个简单的冒泡排序算法
问题描述
通过两个循环实现冒泡排序全过程,外层循环决定冒泡排序的趟数,内层循环决定两两⽐较的次数
技术要点
本实例要求⽤冒泡法对10个数由⼩到⼤进⾏排序,冒泡法的基本思路是,如果要对n个数进⾏冒泡排序,那么要进⾏n-1趟⽐较,然后在第1趟⽐较中要进⾏n-1次两两⽐较,在第j趟⽐较中要进⾏n-j次两两⽐较。从这个基本思路中就会发现,趟数决定了两两⽐较的次数,这样就很容易将两个循环联系起来了
代码⽰例
#include <stdio.h>
#include <stdlib.h>
#define NUM 10
int main(void) {
int i, j, tmp, arry[NUM];
printf("请输⼊%d个数字:", NUM);
for ( i = 0; i < NUM; i++)
{
scanf_s("%d", &arry[i]);
}
for ( i = 0; i < NUM-1; i++)
{
for (j = 0; j < NUM-1; j++)
{
if (arry[j] > arry[j + 1]) {
tmp = arry[j];
arry[j] = arry[j + 1];
arry[j + 1] = tmp;
}
}
}
printf("打印出由⼩到⼤的数组排序:\n");c语言的冒泡排序算法
for ( i = 0; i < NUM; i++)
{
printf("%5d", arry[i]);
}
printf("\n");
system("pause");
return 0;
}
运⾏结果如下
请输⼊10个数字:20 45 55 8 12 66 96 5 35 81
打印出由⼩到⼤的数组排序:
5    8  12  20  35  45  55  6
6  81  96
请按任意键继续. . .