数组 a = { 3,4,2,6,10,11,5 },对这些数进行从小到大排序。
用冒泡排序算法,依次将相邻的两个数进行比较,直到最大数排到最后。
同理,次大数在第二次排序时排到倒数第二位······以此类推,直到按照正常顺序排列。
#includeint main() { int a = {3,6,4,2,11,10,5}; int i = 0,j = 0,tmp = 0; //第一次冒泡排序 for(i = 0;i < 7-1;i++)//共有n个数字,需要(n-1)次循环 { if(a[i] > a[i+1])//前一位数大于后一位数时互换 { tmp = a[i]; a[i] = a[i+1]; a[i+1] = tmp; } for(i = 0;i < 7;i++) printf("%d ",a[i]); printf("n"); } }
第一次冒泡排序后的结果为 :3 2 4 6 10 9 11
嵌套循环,自动循环,但是内循环还是按部就班的重复循环导致浪费
#includeint main() { int a = {3,6,4,2,11,10,5}; int i = 0,j = 0,tmp = 0; for(j = 0; i < 7-1;j++) { for(i = 0;i < 7-1;i++)//重复循环次数,已经排好序的依旧需要循环 { if(a[i] > a[i+1]) { tmp = a[i]; a[i] = a[i+1]; a[i+1] = tmp; } } for(i = 0;i < 7;i++) printf("%d ",a[i]); printf("n"); } }
内循环稍加改动就可以解决这一问题
for(i = 0;i < 7-1-j;i++)//避免重复循环



