以前有个面试官叫我写快速排序,我写了半个小时才写出来,中间还有bug,这里我复习一遍,用python实现一下,希望能对别人有所启发,也希望自己加强记忆。
代码
class Solution():
def __init__(self):
super().__init__()
def partition(self,arr,low,high):
key=arr[low]
while(low<high):
while(low<high and key<=arr[high]):
high-=1
arr[low]=arr[high]
while(low<high and key>=arr[low]):
low+=1
arr[high]=arr[low]
arr[low]=key
return low
def quick_sort(self,arr,low,high):
if(low<high):
p=self.partition(arr,low,high)
self.quick_sort(arr,low,p-1)
self.quick_sort(arr,p+1,high)
return arr
def solve(self,arr):
low=0
high=len(arr)-1
res=self.quick_sort(arr,low,high)
print(res)
if __name__ == "__main__":
arr=[0,1,2,1]
solution=Solution()
solution.solve(arr)
参考文献
[1].笔试题-python实现快排