划分算法(快速排序的根基)
来源:互联网 发布:python爬微博数据 编辑:程序博客网 时间:2024/05/18 00:15
/** * 划分算法 * @author Demon * */public class Partition {static int [] partitionArr = new int [] {0,3,9,0,9,1,3,4,51,10}; //初始化测试数组/** * 划分算法(PIVOT默认选择数组最右端) * @param partitionArr * @param left * @param right */private static int partition(int left, int right) {int pivot = partitionArr[right-1]; // pivot valueint leftPtr = left - 1 ; int rightPtr = right - 1; while (true){while (leftPtr < right && partitionArr[++leftPtr] < pivot);//find the bigger itemwhile (rightPtr > left && partitionArr[--rightPtr] > pivot);//find the smaller itemif(leftPtr >= rightPtr){ // leftPtr > rightPtr break;break;}else {swap(partitionArr,leftPtr,rightPtr); //if the first while find the bigger and the second find the smaller swap it}}return leftPtr;}/** * 交换 * @param partitionArr * @param leftPtr * @param rightPtr */private static void swap(int[] partitionArr, int leftPtr, int rightPtr) {int temp = partitionArr[leftPtr];partitionArr[leftPtr] = partitionArr[rightPtr];partitionArr[rightPtr] = temp;}/** * test main * @param args */public static void main(String[] args) {int partitionInt = partition(0,partitionArr.length);System.out.println("partitionInt:"+partitionInt);System.out.println("length:"+partitionArr.length);for (int i : partitionArr) {System.out.print(" "+i);}}}不过多解释直接上code。
以上代码如有问题欢迎指点后续还会更新快速排序。(在快速排序会有更详细的说明)
最后说下划分算法的效率应为O(N)leftPtr与rightPtr分别从数组两端移动,如满足条件移动停止进行交换,当leftPtr与rightPtr相与则划分完成。运行的时间和N成正比。
- 划分算法(快速排序的根基)
- 数据结构-快速排序-划分算法
- 排序算法之三路划分的快速排序
- 三种快速排序算法的实现(递归算法、非递归算法、三路划分快速排序)
- 三种快速排序算法的实现(递归算法、非递归算法、三路划分快速排序)
- 三种快速排序算法的实现(递归算法、非递归算法、三路划分快速排序)
- 快速排序的划分算法的总结和思考
- Algorithm--让人困惑的快速排序(划分算法)
- Algorithm--让人困惑的快速排序(划分算法) 续
- 算法<基于三路划分的快速排序>
- <算法>基于三路划分的链表快速排序
- 高级排序-快速排序-利用三数据取中划分的快速排序算法
- 快速排序(2)算法改进--小的子文件、三者取中、重复关键字三路划分
- 双向划分的快速排序
- 快速排序的Hoare划分
- 快速排序的三者取中划分
- 快速排序与其中的划分算法
- 数据结构与算法之七(划分算法与快速排序)
- Magento Paypal Web Payment Standard(paypal标准)付款如何设置
- Sqlite 主键自动创建
- yum 命令配置及使用
- 手游爆发“平台战”启幕
- PCM Audio and Wave Files 2
- 划分算法(快速排序的根基)
- 任务处理——最优化问题
- 正式学习第一天,XML的相关内容
- php/遇到的问题
- Magento订单状态详解(一):Magento订单基本流程 http://www.php-source.com/thread-20100-1-1.html
- 如何快速判断一个数是不是 2 的乘方?
- java装饰者模式
- Magento SEO指南之代码优化 http://www.php-source.com/thread-5606-1-1.html
- Magento如何获取产品库存信息