#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/7/14 14:43
# @Author : wutiande
import random
def partition(A:list,left:int,right:int)->int:
"""根据主元对区间进行划分"""
temp = A[left] # 主元
while left<right:
while left<right and A[right]>temp:
right -=1
A[left] = A[right]
while left<right and A[left]<=temp:
left +=1
A[right] = A[left]
A[left] = temp # 把主元放到相遇的地方
return left
def quickSort(A:list,left:int,right:int)->int:
if left<right:
pos = partition(A,left,right)
quickSort(A,left,pos-1)
quickSort(A,pos+1,right)
if __name__ == '__main__':
A = [1,3,2,2,3,4,7,5,6]
index = random.randint(1, len(A) - 1)
print(index)
"""交换A[index]和A[left]"""
A[0],A[index] = A[index],A[0]
quickSort(A,0,right=len(A)-1)
print(A)
python快速排序
最新推荐文章于 2024-05-16 09:11:43 发布