1.介紹:
快速排序(Quicksort)是對冒泡排序的一種改進(jìn)?;舅枷胧牵和ㄟ^一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個排序過程可以遞歸進(jìn)行,以此達(dá)到整個數(shù)據(jù)變成有序序列
2.快速排序示意圖:

快速排序
3.代碼實(shí)現(xiàn)
#快速排序
def sorted(sortlist):
if len(sortlist) < 2: # 左右列表遞歸到只有一個數(shù)就不用排序了
return sortlist
middle = sortlist[len(sortlist)//2] # 這里是把中間值直接取到 return的時候就可以直接用
leftlist = []
rightlist = []
for i in range(len(sortlist)): # 大于middle放rightlist 小于middle放leftlist
if sortlist[i]>middle:
rightlist.append(sortlist[i])
elif middle>sortlist[i]:
leftlist.append(sortlist[i])
# 這里是遞歸的精華所在,首先只有左右列表需要遞歸所以是sorted(leftlist)、sorted(rightlist),其次我們每次遞歸的middle值都是已經(jīng)在本次遞歸的時候就已經(jīng)取到
# 如果不這么做也不行,就無法取到middle值,因?yàn)閟ortlist一直在變化,
return sorted(leftlist) + [middle] + sorted(rightlist)
l= [2,10,8,22,12,5,1,28,21,11]
# l = [-9,78,0,23,-567,70]
res = sorted(l)
print(res)