python快速排序代码_python实现快速排序的几种方法

快速排序算法说明:

设要排序的数组是

A[0]……A[N

-1]

,首先任意选取一个数据(通常选用中间的数)

作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,

这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就

是说,多个相同的值的相对位置也许会在算法结束时产生变动。

一趟快速排序的算法是:

1

)设置两个变量

i

j

,排序开始的时候:

i=0

j=N-1

2

)以第一个数组元素作为关键数据,赋值给

key

,即

key=A[0]

3

j

开始向前搜索,

即由后开始向前搜索

j

--

找到第一个小于

key

的值

A[j]

4

)从

i

开始向后搜索,即由前开始向后搜索(

i ++

),找到第一个大于

key

A[i]

A[i]

A[j]

交换;

5

)重复第

3

4

5

步,直到

I=J

(3,4

步中,没找到符合条件的值,即

3

A[j]

小于

key,4

A[j]

不大于

key

的时候改变

j

i

的值,使得

j=j-1

i=i+1

,直至找到为

止。找到符合条件的值,进行交换的时候

i

j

指针位置不变。另外,

i==j

这一过程一

定正好是

i+

j-

完成的时候,此时令循环结束)。

(

注:以上说明摘自百度百科

)

方法一:经典快速排序算法

下面的代码中是经典快速排序算法,并且范围正序和倒序两种排列方式:

#

正序排列函数

defqiucksortasc(arr,begin,end):

#

设定取出开始的第一个值用于判断

key=arr[begin]

#

从左边开始找大于

key

值的元素下标

pl=begin

#

从右边开始找小于

key

值的元素下标

pr=end

while 1:

#

找到从右边开始第一个小于

key

的元素

,

如果大于

key

pr-1

继续寻找

whilearr[pr]>key:

pr=pr-1

#

找到从左边开始第一个大于

key

的元素,如果小于

key

pl+1

继续寻找

whilearr[pl]

pl=pl+1

#

交换

arr[pr]

arr[pl]

的值

arr[pl],arr[pr]=arr[pr],arr[pl]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值