受益于一位前辈的快排博客,感谢感恩开源,记录一下用python实现的快排~
主要思想:分而治之
以基准数为分界线,左边比其小,右边比其大
1.i=L,j=R,取出基准数s[i],形成第一个坑
2.j--由后向前找比基准数小的数,找到后填到前一个坑s[i]中
3.i++由前向后找比基准数大的数,找到后填到第一个坑s[j]中
4.重复2,3步,直到i=j,将基准数填入到坑s[i]中
def adjust_array(s,l,r):#s代表list,l代表left_index,r代表right_index
i,j=l,r
x=s[i]
while i<j:
while i<j and s[j]>x:
j-=1
if i<j:
s[i]=s[j]
i+=1
while i<j and s[i]<x:
i+=1
if i<j:
s[j]=s[i]
j-=1
s[i]=x
return i
def quick_sort(s,l,r):
if l<r:
i=adjust_array(s,l,r)
quick_sort(s,l,i-1)
quick_sort(s,i+1,r)
return s