这个应该到网上去搜索啊,不该在这问。
冒泡排序的原理就是:(升序)
依次比较相邻的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; //交换
}
}
}
}
此即
冒泡法排序。当然,冒泡还有一些变种,如:增加标志,如果某次循环中,没发生一次交换,则说明已经排序完毕。则结束循环,这样可以加快速度。
追问好的太谢谢了