求大神解疑,C语言冒泡排序代码这个程序哪里有问题?谢谢谢谢超级感谢

 这个应该到网上去搜索啊不该茬这问。
冒泡排序的原理就是:(升序)
 依次比较相邻的2个数把较大的值放在后面,使最后一个数变成数组中的最大值
 循环这个过程,直到所有的数据都按这个规则排列好此时,排序完毕
举例:3,2,5,7,1 (升序)
1. 3与2比较,交换 数组:2,3,5,7,1
2. 3与5比较, 不交换, 数组: 2,3,5,7,1
3. 5与7比较, 不交换, 数组: 2,3,5,7,1
4. 7与1比较, 茭换 , 数组: 2,3,5,1,7
第一次遍历比较完成,此时最后一个数据就是最大值了。
此后的比较只要比较2,3,5,1即可,因为最后一个已经是最大的了
然后再按这个规则循环。
代码的话:
#include <stdio.h>
int main() {
int i, j, t;
int a[] = {3,2,5,7,1};
int len = 5; //数组长度5
//外层循环就是按照这个算法:控制需要最多几次循环才能排序完毕
for (i=0;i<len-1;i++) { //注意,只要比较len-1次循环
//内层循環就相当于上面1-4步,数据两两相比较
for (j=0;j<len-i-1;j++) { //注意比较次数是:len-i-1次
if (a[j]>a[j+1]) {//相邻2个做比较
t = a[j];a[j]=a[j+1];a[j+1]=t; //交换
}
}
}
}
此即冒泡法排序。当然冒泡还有一些变种,如:增加标誌如果某次循环中,没发生一次交换则说明已经排序完毕。则结束循环这样可以加快速度。
}

我要回帖

更多关于 c语言冒泡排序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信