📅  最后修改于: 2021-01-12 03:39:08             🧑  作者: Mango
冒泡排序是一种基本排序算法,必要时可通过重复交换相邻元素来工作。如果不需要交换,则对文件进行排序。
这是所有排序算法中最简单的技术。
Algorithm: Sequential-Bubble-Sort (A)
fori← 1 to length [A] do
for j ← length [A] down-to i +1 do
if A[A] < A[j - 1] then
Exchange A[j] ↔ A[j-1]
voidbubbleSort(int numbers[], intarray_size) {
inti, j, temp;
for (i = (array_size - 1); i >= 0; i--)
for (j = 1; j <= i; j++)
if (numbers[j - 1] > numbers[j]) {
temp = numbers[j-1];
numbers[j - 1] = numbers[j];
numbers[j] = temp;
}
}
在这里,比较次数是
1 + 2 + 3 + … +( n -1)= n ( n -1)/ 2 = O( n 2 )
显然,该图显示了气泡排序的n 2性质。
在该算法中,比较次数与数据集无关,即所提供的输入元素是按排序顺序还是反向顺序还是随机的。
根据上述算法,很明显气泡排序不需要额外的内存。
Unsorted list: |
|
5 > 2 swap |
|
|||||||
5 > 1 swap |
|
|||||||
5 > 4 swap |
|
|||||||
5 > 3 swap |
|
|||||||
5 < 7 no swap |
|
|||||||
7 > 6 swap |
|
2 > 1 swap |
|
|||||||
2 < 4 no swap |
|
|||||||
4 > 3 swap |
|
|||||||
4 < 5 no swap |
|
|||||||
5 < 6 no swap |
|
有一个在3日,4日,第5和第6次迭代没有发生变化。
最后,
the sorted list is |
|