~简单理解冒泡排序就是从前往后逐位比较大小,以升序举例,如果第一位比第二位大,则第一位的值与第二位的值调换位置,再继续比较第二位与第三位...直至比较到最后一位。
~例:5 3 1排序 int nums[3]={5,3,1};
·初始序列:nums[0]=5;nums[1]=3;nums[2]=1;
5与3比5大,则令nums[1]取值5,nums[0]取值3(就是0位与1位调换位置)。
·这会儿序列变为:nums[0]=3;nums[1]=5;nums[2]=1;
比较nums[1]=5,nums[2]=1,5大于1,则令nums[2]=5,nums[1]=1.
·这会儿序列变为:nums[0]=3;nums[1]=1;nums[2]=5;
最后比较nums[0]=3,nums[1]=1,3大于1,则令nums[1]=3,nums[0]=1
·结果序列:nums[0]=1;nums[1]=3;nums[2]=5;
看程序:
#includeint main() { int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9}; int i, j, temp; //定义一个中间值temp //冒泡排序算法:进行 n-1 轮比较 for(i=0; i<10-1; i++) { //每一轮比较前 n-1-i 个,也就是说,已经排序好的最后 i 个不用比较 for(j=i+1; j<10; j++) { //如果前一位比后一位大 if(nums[i] > nums[j]) { temp = nums[i]; // 把大值取出来放在temp里 nums[i] = nums[j];//把后一位小值调到前一位 nums[j] = temp;//取出来的那个大的值赋值给后一位 } } } //输出排序后的数组 for(i=0; i<10; i++) { printf("%d ", nums[i]); } return 0; }
结果:1 2 3 4 5 6 7 8 9 10
思考下降序怎么弄吧,只需要一秒钟就可以搞定!



