问题描述
通过两个循环实现冒泡排序全过程,外层循环决定冒泡排序的趟数,内层循环决定两两比较的次数
技术要点
本实例要求用冒泡法对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");
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 ? 66 ? 81 ? 96 请按任意键继续. . .
|