冒泡排序是一种简单直观的排序算法,其基本思想是通过重复遍历要排序的数列,比较每对相邻的元素,并在必要时交换它们的位置。每次遍历都会将当前未排序部分的最大(或最小)元素“冒泡”到序列的一端。这个过程会一直重复,直到整个序列排序完成。
下面是冒泡排序的Python实现代码:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
最后i个元素已经排好序,不需要再比较
for j in range(0, n - i - 1):
如果当前元素大于下一个元素,则交换它们的位置
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr[1:] 返回排序后的列表,去掉最后一个元素
冒泡排序的工作原理可以概括为以下步骤:
1. 从序列的开头开始,比较相邻的两个元素。
2. 如果前一个元素大于后一个元素,则交换它们的位置。
3. 重复上述步骤,直到序列的末尾,经过每次遍历后,当前未排序部分的最大元素都会被移到序列的末尾。
4. 每次遍历后减少比较的范围,直到整个序列排序完成。
冒泡排序的时间复杂度为O(n^2),其中n是列表的长度。它是一种稳定排序算法,意味着相等的元素在排序后保持原来的相对顺序。