C语言的十大组数之冒泡排序法的应用

情景回顾

上节回顾:C语言的数组:跨越一个阶梯,如何用一种数据结构存储无限多的数据?

本节重点

本节重点:冒泡排序法



关注不迷路

微信公众号:工控小新


学习工控知识就来工控小新,为你提供工控笔记知识:EPLAN电气绘图 | TIA博图基础 | CAD | C语言教学 | 单片机基础 | 三菱PLC ... 每日持续更新中



冒泡排序是一种简单而直观的排序方法,它的基本思想是从数组的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序不符合要求,就交换它们的位置,这样一趟下来,最大或最小的元素就会被移动到数组的末尾。然后重复这个过程,直到所有的元素都被排序好为止。

冒泡排序的时间复杂度是O(n2),空间复杂度是O(1)。它的优点是实现简单,不需要额外的空间,稳定性好。它的缺点是效率低,当数组已经有序或接近有序时,仍然需要进行很多无用的比较和交换。

1. 算法步骤

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

2. 排列大小:

冒泡排序的C语言实现如下:

#include 
void bubble_sort(int arr[], int len) 
{
      int i, j, temp;
      for (i = 0; i < len - 1; i++)
              for (j = 0; j < len - 1 - i j if arrj> arr[j + 1]) 
                      {
                              temp = arr[j];
                              arr[j] = arr[j + 1];
                              arr[j + 1] = temp;
                      }
}
int main() 
{
      int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
      int len = sizeof(arr) / sizeof(arr[0]);
      bubble_sort(arr, len);
      int i;
      for (i = 0; i < len; i++)
              printf("%d ", arr[i]);
      return 0;
}

#挑战30天在头条写日记#

原文链接:,转发请注明来源!