#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time : 2019/12/6 8:40
# @Author : LiHongyv
# @File : paixu.py
# @Software: PyCharm
def partition(arr, low, high):
i = low - 1 # 最小元素索引,i是慢指针
pivot = arr[high] #选取数组最后一个元素作为pivot
for j in range(low, high):#j是快指针,终止位置在倒数第二个位置
# 当前元素小于或等于 pivot
if arr[j] <= pivot:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i + 1], arr[high] = arr[high], arr[i + 1]
return i + 1 #return的是原数组 pivot所在的下标
# arr[] --> 排序数组
# low --> 起始索引
# high --> 结束索引
# 快速排序函数
def quick_sort(arr, low, high):
if low < high: #终止条件
pivot_index = partition(arr, low, high)
quick_sort(arr, low, pivot_index - 1)
quick_sort(arr, pivot_index + 1, high)
#定义一个乱序arr并调用
arr = [10, 11, 8, 8, 9, 1, 5]
quick_sort(arr, 0, len(arr) - 1)
print("排序后的数组:")
for i in range(len(arr)):
print(arr[i])

本文深入讲解了快速排序算法的实现原理及步骤,通过定义分区函数和递归调用来完成数组的排序过程。文章以Python代码为例,展示了如何选择枢轴元素,并通过快慢指针技巧进行元素交换,最终实现数组的高效排序。
898

被折叠的 条评论
为什么被折叠?



