Bublble Sort
运行
从0项开始,每相邻的两个数开始比较,若a[0]>a[1]就交换val。10个数在第一轮会有9次比较,10个数比较完后右边出现最大的val。然后把这个最后的数给抹去,第二轮就只有9个数的8次比较。依次循环,最后只抹去8个数,只剩下的2个数比较,这两个数比较完后,排序结束
思路
冒泡排序的循环可以分为两种:1.内循环:比较循环(因为比较的时候需要交换val,里面要有交换函数) ;2.外循环:抹去n-2个数字
注:因为第一轮的交换是n个数参与的,没有抹去任何数,所外循环从0开始
内外循环一定是有关联的,外循环抹去数后,内循环的比较次数一定会减少,抹去1个数就少一次比较
代码
#include <stdio.h> int main(void) { int a[10]; int i, j, temp; printf("please enter 10 integer"); for (i = 0; i < 10; i++) scanf("%d", &a[i]); for (j = 0; j < 10 - 1; j++)//外(减数)循环:0~n-1表示减去n-2个数字 { for (i = 0; i < 10 - 1 - j; i++)//里(交换)循环:n-1代表,在n个数之中会有n-1此的交换 { if (a[i] < a[i + 1]) { temp = a[i]; a[i] = a[i + 1]; a[1 + i] = temp; } } } for (i = 0; i < 10; i++) printf("%d ", a[i]); return 0; } |