双调排序python代码
时间: 2024-10-21 11:00:42 浏览: 15
双调排序(Sortition Sort),也称为随机选择排序,是一种简单直观的排序算法。它的工作原理是每次从未排序的数据元素中随机选出一个作为新的最小(或最大)值放到已排序序列的末尾。以下是Python实现的一个基本版本:
```python
import random
def dual_pivot_sort(arr):
if len(arr) <= 1:
return arr
# 随机选取两个pivot
pivot1 = random.randint(0, len(arr)-2)
pivot2 = random.randint(pivot1 + 1, len(arr) - 1)
left = [x for x in arr[:pivot1] if x < arr[pivot1]]
middle1 = [x for x in arr[pivot1+1:pivot2] if x >= arr[pivot1] and x < arr[pivot2]]
middle2 = [x for x in arr[pivot2+1:] if x >= arr[pivot2]]
right = [x for x in arr if x > arr[pivot2]]
# 合并排序结果
return dual_pivot_sort(left) + middle1 + [arr[pivot1]] + middle2 + [arr[pivot2]] + dual_pivot_sort(right)
# 测试
unsorted_list = [5, 2, 9, 1, 5, 6]
sorted_list = dual_pivot_sort(unsorted_list)
print("Sorted List:", sorted_list)
阅读全文