碎碎念念
快速排序的基本思想是:首先找一个基准数,一般选第一个数或者最后一个数作为基准数,然后先把这一串数以基准数为界限分成两部分,一部分比基准数小,另一部分比基准数大。然后用分治法的思想,进行递归调用,对每一部分继续操作下去,直到每一部分只剩下一个数。
代码
代码语言:javascript复制def fast(number,first,last):#从小到大排序。
if first>=last:#相同说明这小部分一排序完毕。
return
standard=number[first]#选取第一个为基准数
i=first
j=last
while i!=j:#从两边出发,比基准数小的扔一边,比基准数大的扔另一边
while j>i and number[j]>=standard:#从右边出发,目的是找到比基准数小的数
j=j-1
while j>i and number[i]<=standard:#从左边出发,目的是找到比基准数大的数
i=i 1
if j>i:#然后交换这两个数
number[i],number[j]=number[j],number[i]
number[first]=number[j]
number[j]=standard#把基准数放在中间,这里中间的意思是不在两边
fast(number,first,i-1)#继续排基准数左边的
fast(number,i 1,last)#继续排基准数右边的
number=[3,6,5,8,1,4,7,9,2,0]
fast(number,0,9)
print(number)