-
基本思路:
根据序列中两个记录键值的比较结果来交换这两个记录在序列中的位置,一前一后两个下标的值进行比较,如果前一个值比后一个值大就进行交换。 - 动图演示:
- 时间复杂度: O(N ^2)。该排序每次都要和相邻的两个数进行比较,最坏情况下比较n次,跑n躺。
- 空间复杂度: O(1)。
代码实现:
// 冒泡排序
void BubbleSort(int arr[], int n)
{
for (int i = 0; i < n - 1; i++)
{
//假设没有发生判断,如果发生判断,就将flag置为,否则就退出
int flag = 0;
for (int j = 0; j < n - 1 - i; j++)
{
int tmp = 0;
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = 1;
}
if (flag == 0)
{
break;
}
}
}
结论: 该排序效率低下,实际中几乎不使用。