一、快速排序
1.快速排序:快
2.快速排序思路:
取一个元素p (第一个元素),使元素p归位;
列表被p分成两部分,左边都比p小,右边都比p大;
递归完成排序。
3.快速排序框架:
def partition(li,left,right):
tmp=li[left]
while left<right:
while left<right and li[right]>=tmp: #从右面找出tmp小的数
right-=1 #往左走一步
li[left]=li[right] #把右边的值写到左边空位上
print(li,'right')
while left<right and li[left]<=tmp:
left+=1
li[right]=li[left] #把左边的值写到右边空位上
print(li,'left')
li[left]=tmp #把tmp归位
li=[6,5,9,3,8,1,7,2]
print(li)
partition(li,0,len(li)-1)
print(li)
快速排序
def partition(li,left,right):
tmp=li[left]
while left<right:
while left<right and li[right]>=tmp: #从右面找出tmp小的数
right-=1 #往左走一步
li[left]=li[right] #把右边的值写到左边空位上
#print(li,'right')
while left<right and li[left]<=tmp:
left+=1
li[right]=li[left] #把左边的值写到右边空位上
#print(li,'left')
li[left]=tmp #把tmp归位
return left
def quick_sort(li,left,right):
if left<right: #至少两个元素
mid=partition(li,left,right)
quick_sort(li,left,mid-1)
quick_sort(li,mid+1,right)
li=[6,5,9,3,8,1,7,2]
#print(li)
#partition(li,0,len(li)-1)
#print(li)
quick_sort(li,0,len(li)-1)
print(li)