C语言的十大组数之冒泡排序法的应用
情景回顾
上节回顾:C语言的数组:跨越一个阶梯,如何用一种数据结构存储无限多的数据?
本节重点
本节重点:冒泡排序法
关注不迷路
微信公众号:工控小新
学习工控知识就来工控小新,为你提供工控笔记知识:EPLAN电气绘图 | TIA博图基础 | CAD | C语言教学 | 单片机基础 | 三菱PLC ... 每日持续更新中
冒泡排序是一种简单而直观的排序方法,它的基本思想是从数组的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序不符合要求,就交换它们的位置,这样一趟下来,最大或最小的元素就会被移动到数组的末尾。然后重复这个过程,直到所有的元素都被排序好为止。
冒泡排序的时间复杂度是O(n2),空间复杂度是O(1)。它的优点是实现简单,不需要额外的空间,稳定性好。它的缺点是效率低,当数组已经有序或接近有序时,仍然需要进行很多无用的比较和交换。
1. 算法步骤
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2. 排列大小:
冒泡排序的C语言实现如下:
#include <stdio.h>
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 (arr[j] > 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;
}