快速排序是一种非常高效的排序算法,它采用“分而治之”的思想,把大的拆分成小的,小的再拆分为更小的。其原理是:对于一组给定的记录,通过一趟排序后,将原序列分为两部分,其中前部分的所有记录均比后部分的所有记录小,然后再依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均有序为止。
def quick_sort(lists,left,right):
if left>=right:
return lists
key = lists[left]
low = left
high = right
while left<right:
while left<right and lists[right]>key:
right-=1
lists[left]=lists[right]
while left<right and lists[left]<key:
left+=1
lists[right]=lists[left]
lists[right] = key
quick_sort(lists,low,left-1)
quick_sort(lists,left+1,high)
return lists
if __name__ =="__main__":
lists =[3,4,2,8,9,5,1,7]
print('排序前序列为:'),
for i in (lists):
print(i)
print('\n排序后结果为:'),
for i in (quick_sort(lists,0,len(lists)-1)):
print(i)
结果
排序前序列为:
3
4
2
8
9
5
1
7
排序后结果为:
1
2
3
4
5
7
8
9
Process finished with exit code 0
快速排序是一种不稳定的排序算法,最坏时间复杂度为O(n^2),最好时间复杂度为O(nlogn),平均时间复杂度为O(nlogn)。