复制
收藏
提问
简洁
python写个快速排序
5月前
回答
更专业一些
快速排序是一种高效的排序算法,它使用分治法(Divide and conquer)策略来对序列进行排序。以下是使用Python实现快速排序的步骤和代码示例:
快速排序的基本步骤:
- 挑选基准值:从数列中挑出一个元素,称为"基准"(pivot)。
- 分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面。与基准值相等的数可以放在任一边。
- 递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。
- 递归到最底部的判断条件:数列的大小是零或一,此时该数列显然已经有序。
Python实现快速排序的代码:
def quick_sort(arr):
# 递归的基准条件:如果数组长度小于等于1,直接返回数组
if len(arr) <= 1:
return arr
else:
# 选择基准值,这里选择数组的最后一个元素作为基准
pivot = arr[-1]
# 初始化两个子序列,小于基准值的子序列和大于基准值的子序列
less = []
greater = []
# 遍历数组,根据与基准值的比较,分配到相应的子序列
for i in range(len(arr) - 1): # 不包括基准值
if arr[i] < pivot:
less.append(arr[i])
else:
greater.append(arr[i])
# 对子序列进行递归排序,然后合并结果
return quick_sort(less) + [pivot] + quick_sort(greater)
# 示例数组
array = [3, 6, 8, 10, 1, 2, 1]
# 执行快速排序
sorted_array = quick_sort(array)
print(sorted_array)
注意事项:
- 选取基准值的方法对排序的时间性能有决定性影响。在上述代码中,我们简单地选择了数组的最后一个元素作为基准值,但在实际应用中,可能会采用更复杂的方法来选择基准值,以提高算法效率。
- 快速排序是原地排序算法,它不创建数组的任何副本,所有操作都在内存中完成。
- 快速排序是非稳定排序算法,它不保证相同的值在数组中的相对顺序。
以上代码实现了快速排序的基本逻辑,你可以根据需要调整基准值的选择策略以优化性能。
研究模式展开阅读更多资料、详细回答