python快速排序的运作过程

python快速排序的运作过程

运作过程

1、从数列中挑出一个元素,称为基准,重新排序数列,所有元素比基准值小的摆放在基准前面。

所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区操作。

2、小于基准值元素的子数列和大于基准值元素的子数列排序。

3、递归的最底部情形,是数列的大小是零或一。

也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会结束,因为在每次的迭代中,它至少会把一个元素摆到它最后的位置去。

实例

#快速排序-递归

defquick_sort(alist,begin,end):

#递归的终止条件是begin>=last,即数组大小为1或0

#递归终止时,数组已经排好序了

ifbegin>=end:

return

else:

#以开头的值作为基准值,然后以基准值为界将数组分区,将分区后的左右两部分继续调用快速排序函数

mid_value=alist[begin]

low=begin

high=end

#分别从右往左寻找小于基准值的值,从左往右寻找大于基准值的值

whilelow

#从右往左寻找小于基准值的值

whilelow=mid_value:

high-=1

alist[low]=alist[high]

#从左往右寻找大于基准值的值

whilelow

low+=1

alist[high]=alist[low]

#循环结束时,low==high,这个位置正是基准点的位置

alist[low]=mid_value

#对low左边的元素执行快速排序

quick_sort(alist,begin,low-1)

quick_sort(alist,low+1,end)

if__name__=='__main__':

alist=[54,26,93,17,77,31,44,55,20]

print(alist)

quick_sort(alist,0,len(alist)-1)

print(alist)

以上就是python快速排序的运作过程,希望对大家有所帮助。更多Python学习教程请关注我们

推荐阅读