Python组合排序算法
时间: 2024-10-30 15:05:39 浏览: 14
python实现排序算法解析
Python中有很多组合排序算法,下面列举几种常见的:
1. **冒泡排序(Bubble Sort)**: 这是最简单的排序算法之一,它反复交换相邻的未按序元素,直到序列完全有序。虽然简单,但对于大型数据集效率较低。
```python
def bubble_sort(lst):
n = len(lst)
for i in range(n):
for j in range(0, n-i-1):
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
```
2. **插入排序(Insertion Sort)**: 比较每个元素,将其插入到已排序的部分的适当位置。适用于小型数组和基本就有序的数据。
```python
def insertion_sort(lst):
for i in range(1, len(lst)):
key = lst[i]
j = i - 1
while j >= 0 and key < lst[j]:
lst[j + 1] = lst[j]
j -= 1
lst[j + 1] = key
```
3. **选择排序(Selection Sort)**: 每次从未排序的元素中选出最小(或最大)的元素放到已排序部分的末尾。
```python
def selection_sort(lst):
for i in range(len(lst)):
min_idx = i
for j in range(i+1, len(lst)):
if lst[min_idx] > lst[j]:
min_idx = j
lst[i], lst[min_idx] = lst[min_idx], lst[i]
```
4. **快速排序(Quick Sort)**: 使用分治策略,选取一个基准值,将小于它的放在左边,大于它的放在右边,然后对两边递归地进行排序。这是一种高效的通用排序方法。
```python
def quick_sort(lst, low=None, high=None):
if low is None:
low = 0
if high is None:
high = len(lst) - 1
if low < high:
pivot_index = partition(lst, low, high)
quick_sort(lst, low, pivot_index - 1)
quick_sort(lst, pivot_index + 1, high)
def partition(lst, low, high):
pivot = lst[high]
i = low - 1
for j in range(low, high):
if lst[j] <= pivot:
i += 1
lst[i], lst[j] = lst[j], lst[i]
lst[i + 1], lst[high] = lst[high], lst[i + 1]
return i + 1
```
以上是一些基础的排序算法实现,Python标准库的`sorted()`函数或内置列表方法`list.sort()`通常会使用更复杂、高效且稳定的排序算法,如Timsort。
阅读全文