Python 优化快速排序算法:随机选取 Pivot 和 三分排序
使用 Python 编码:优化快速排序算法和三分排序
- 随机选取 Pivot 的快速排序实现:
快速排序中通常选择第一个元素作为 Pivot,但这会导致性能问题,尤其是在元素分布不均匀的情况下。为了提高效率,我们通常采用随机选取 Pivot 的方法。
以下代码使用 random 库的 randint 函数来实现随机选取 Pivot 的快速排序算法:
import random
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = random.randint(0, len(arr)-1)
left, right, mid = [], [], []
for i in range(len(arr)):
if arr[i] < arr[pivot]:
left.append(arr[i])
elif arr[i] == arr[pivot]:
mid.append(arr[i])
else:
right.append(arr[i])
return quick_sort(left) + mid + quick_sort(right)
- 正数在左、0 在中、负数在右的排序实现:
对于包含正数、0 和负数的数组,我们可以使用三分排序将其排序,使得正数在左边、0 在中间、负数在右边。
以下代码实现了该算法:
def sort_array(arr):
i, j, k = 0, 0, len(arr)-1
while j <= k:
if arr[j] > 0:
arr[i], arr[j] = arr[j], arr[i]
i += 1
j += 1
elif arr[j] == 0:
j += 1
else:
arr[j], arr[k] = arr[k], arr[j]
k -= 1
return arr
以上代码均为简单实现,可能存在一定的性能问题,但可以满足基本需求。
注意:
- 本文仅提供基本实现,读者可以根据实际情况进行优化和扩展。
- 在实际应用中,建议使用 Python 的内置排序函数
sorted(),其性能更高效。
原文地址: https://www.cveoy.top/t/topic/nk3y 著作权归作者所有。请勿转载和采集!