Python 编程:从简单到高级的排序算法372



排序是数据处理中的一个基本操作,在 Python 编程中,有多种现成的排序算法可供使用。这些算法根据具体情况而效率不同,选择合适的算法可以显著提高程序的性能。本文将介绍 Python 中常见的排序算法,从易于理解的冒泡排序到高效复杂的快速排序,并提供代码示例和时间复杂度分析。

冒泡排序

冒泡排序是一种简单易懂的排序算法。它通过不断比较相邻元素并交换位置,将最大值逐个“冒泡”到数组末尾。每次遍历数组时,都会找出最大值并将其交换到当前位置,直到整个数组有序为止。冒泡排序的时间复杂度为 O(n^2),其中 n 是数组长度。```python
def bubble_sort(arr):
for i in range(len(arr) - 1):
for j in range(len(arr) - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
```

选择排序

选择排序也是一种比较简单的排序算法。它通过在未排序部分中找到最小值并与当前位置交换,将最小值逐个移动到数组开头。每次遍历数组时,都会找到最小值并将其交换到当前位置,直到整个数组有序为止。选择排序的时间复杂度也为 O(n^2)。```python
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
```

插入排序

插入排序是一种直观的排序算法,它通过逐个将元素插入到已排序部分中来对数组进行排序。从第二个元素开始,算法会比较当前元素与已排序部分中的元素,并在适当的位置插入。插入排序的时间复杂度为 O(n^2),但对于小规模数组或几乎有序的数组,它可以比冒泡排序和选择排序更有效率。```python
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
```

归并排序

归并排序是一种分治算法,它通过将数组递归地分成更小的部分,对这些部分进行排序,然后合并它们来对整个数组进行排序。归并排序的时间复杂度为 O(n log n),这比冒泡排序、选择排序和插入排序要好得多。但是,归并排序需要额外的空间来存储临时数组。```python
def merge_sort(arr):
if len(arr)

2025-02-03


上一篇:Python 直播编程:走进互动式在线开发的世界

下一篇:Python居中编程大法