> 文档中心 > 冒泡排序(C语言实现)

冒泡排序(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来判断函数是否有序,优化了程序