Python 快速排序如何实现每次排序随机选取基值?
在快速排序算法中,基值的选择对算法的性能有很大影响。传统的快速排序算法通常选择第一个元素作为基值,但这种选择可能导致算法在某些情况下表现不佳。因此,我们探索如何实现每次排序时随机选取基值。
问题:
立即学习“Python免费学习笔记(深入)”;
回答:
使用 python 的 random 模块可以实现随机选取基值。具体步骤如下:
- 导入 random 模块:import random
- 将基值选择代码从 piviot = array[0] 更改为 piviot = array[random.randint(0,len(array)-1)]
通过使用 random.randint(0, len(array) - 1),我们可以得到一个介于 0 和数组长度 - 1 之间的随机索引,从而从数组中随机选取基值。
代码示例:
import random def quick_sort(array): if len(array) < 2: return array else: pivot = array[random.randint(0, len(array) - 1)] less = [i for i in array if i < pivot] middle = [i for i in array if i == pivot] greater = [i for i in array if i > pivot] return quick_sort(less) + middle + quick_sort(greater)