快速排序

基本原理:通过一趟排序将记录分割成两个部分。其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两个部分记录继续进行排序,以达到整个序列有序。


如何分割?
有n个关键字的数列待排列,将第一个元素定为枢纽pivotkey;将数列中其它关键字和pivotkey进行比较,大于pivotkey的放置在pivotkey的后面,小于pivotkey的放置在pivotkey的前面。这就是一趟排序的过程,将一个数列分割成了两个部分,其中pivotkey的前面记录的关键字均比pivotkey的后面的记录的关键字小。然后,就对这两个部分分别继续进行上述这样的排序。(从这个思路就可以预言:这个算法将会用到递归实现)


一趟快速排序具体实现方案?
附设两个指针low和high,它们的初值分别为low和high,设枢纽记录的关键字为pivotkey,则首先从High所指向的位置向前搜索找到第一个关键字小于pivotkey的记录和枢纽记录进行交换,然后从low所指向的位置向后搜索,找到第一个关键字大于pivotkey的记录个枢纽进行交换,重复这两个步骤直至low==high为止。


具体实现如下:

 

就平均时间而言,快速排序是目前被认为是最好的一种内部排序方法。快速排序的平均时间为Tavg(n)=kn ln(n).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值