冒泡排序(C语言实现)
冒泡排序的基本思想:
冒泡排序(Bubble Sort):由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
冒泡排序流程:
- 比较相邻的元素。若前一个比后一个大,就交换它们两个(小数往前放,大数往后放)
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对
- 完成一次冒泡排序
- 针对所有的元素重复以上的步骤,除了最后一个
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
冒泡排序图解 :
使用冒泡排序法将整形乱序数组升序排列:
#define _CRT_SECURE_NO_WARNINGS#includevoid bubble_sort(int* arr, int sz){int flag = 1;//假设已经有序int i = 0;//总共sz个数,进行sz-1趟排序for (i = 0; i < sz-1; i++){int j = 0;//让第i个数到正确位置,一趟冒泡排序for (j = 0; j arr[j + 1]){flag = 0;int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}//若程序运行至此flag的值为1,证明一趟冒泡排序进行时,发现该数组有序,跳出循环if (flag == 1){break;}}}int main(){int arr[] = { 10,9,8,7,6,5,4,3,2,1 };//定义一个乱序数组int sz = sizeof(arr) / sizeof(arr[0]);//计算数组长度bubble_sort(arr, sz);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;}
注:冒泡排序函数中使用了变量flag来判断函数是否有序,优化了程序