冒泡排序 (稳定) O(n^2)
(稳定:表示相等的数,相对位置会不会改变)
冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的元素,比较相邻两个元素的大小并交换它们,从而将最大(或最小)的元素逐步移到最后。以下是 Python 中冒泡排序的实现:
代码示例:
list=[1,4,3,9,8]
for i in range(0,len(list)-1):
for j in range(0,len(list)-1-i):
if list[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
print(list)
结果显示:
我的理解:
冒泡排序的思想相对简单,可以通过以下方式进行简单理解:
-
比较相邻元素: 从数组的第一个元素开始,依次比较相邻的两个元素。
-
交换元素位置: 如果前面的元素比后面的元素大(升序排序),则交换它们的位置,将较大的元素移到后面。
-
遍历整个数组: 继续进行上述比较和交换的操作,直到遍历整个数组。
-
一轮完成: 这样一轮的操作之后,数组中最大的元素已经被移到了最后。
-
重复操作: 重复上述步骤,每一轮都将数组中当前未排序的最大元素移到了正确的位置。
-
排序完成: 当数组中不再存在需要交换的元素时,排序完成。
示例理解:
考虑数组 [64, 34, 25, 12, 22, 11, 90]
:
-
第一轮:
- 比较并交换 64 和 34,得到
[34, 64, 25, 12, 22, 11, 90]
。 - 比较并交换 64 和 25,得到
[34, 25, 64, 12, 22, 11, 90]
。 - …
- 比较并交换 11 和 90,得到
[34, 25, 12, 22, 11, 64, 90]
。
- 比较并交换 64 和 34,得到
-
第二轮:
- …
- 比较并交换 11 和 64,得到
[34, 25, 12, 22, 11, 64, 90]
。
-
第三轮:
- …
- 比较并交换 11 和 34,得到
[25, 12, 22, 11, 34, 64, 90]
。
-
以此类推,最终得到有序数组
[11, 12, 22, 25, 34, 64, 90]
。
虽然冒泡排序的性能相对较低,但通过上述简单的比较和交换操作,我们可以将较大的元素逐步“浮”到数组的末尾,从而实现排序。