在总结冒泡排序前:先从头开始,对冒泡排序(BubbleSort)进行一个系统性了解:
冒泡排序法,又称交换排序法,是从观察水中的气泡变化构思而成的,原理是从第一个元素开始,比较相邻元素的大小,如果大小顺序不对,则进行两个数据的调换,就好像气泡从水中逐渐上升到水面上一样。经过这样的扫描,就可以一次接着一次的排序,直到完成所有元素的排序工作。
如图,我使用5个元素:14,11,25,18,44来进行冒泡排序法的演示:
为了更直观的体现冒泡多次排序,再换一组数据进行排序 55,23,87,62,16:
如何通过数学的方式进行表达呢?
原理已经基本清楚,将思路代码化:
#include#include void Bubble_sort(int array[], int n)//定义排序函数 { int j = 0; int I = 0; int temp; for (i = 0; i < n-1;i ++){//与除自己以外的其他9个元素进行比较 for (j = 0; j < n-1 - i; j++)//n-1-i的意思是每比较一趟元素就会少一个 { if (array[j] > array[j+1])//升序排法,如果前面的数大于后面的数,即调换位置 { temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } } } int main() { int array[10]; int i; printf("请输入10个数n"); for (i = 0; i < 10; i++){//接收用户在终端中输入的数值,并添加进数组。 scanf("%d", &array[i]); } printf("选择排序前的各元素是:"); for (i = 0; i < 10; i++){ printf("%d ", array[i]); } printf("n经过冒泡排序后的数组是:"); Bubble_sort(array, 10); for (i = 0; i < 10; i++){ printf("%d ", array[i]); } return 0; }
如图,我输入十个数据:10,9,8,7,6,5,4,3,2,1
输出完成
如图,从程序的执行结果来,冒泡排序已经执行完毕,并且把数组中的十个元素从小到大排序了出来。



