快排
来源:互联网 发布:怎么看淘宝旗舰店执照 编辑:程序博客网 时间:2024/04/30 11:47
Jon Bently的快排
void quicksort(int l, int u){ int i, m; if(l >= u) return; m = l; for(i = l+1; i<= u; i++) if(x[i] < x[l]) // buggy! swap(++m, i); swap(l, m); quicksort(l, m-1); quicksort(m+1, u);}
[l, m) 位置保存着当前已处理元素之中所有的小于pivot的元素
i指向的是下一个待处理的元素
第l个元素是pivot。
但是,partition在大量duplicate key的情况下,会把这些key全部放到左边或者右边,导致不公平的切分。
public static void sort(Comparable[] a) { StdRandom.shuffle(a); sort(a, 0, a.length - 1); assert isSorted(a); } // quicksort the subarray a[lo .. hi] using 3-way partitioning private static void sort(Comparable[] a, int lo, int hi) { if (hi <= lo) return; int lt = lo, gt = hi; Comparable v = a[lo]; int i = lo; while (i <= gt) { int cmp = a[i].compareTo(v); if (cmp < 0) exch(a, lt++, i++); else if (cmp > 0) exch(a, i, gt--); else i++; } // a[lo..lt-1] < v = a[lt..gt] < a[gt+1..hi]. sort(a, lo, lt-1); sort(a, gt+1, hi); assert isSorted(a, lo, hi); }
0 0
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排。
- Android获取存储卡路径的方式
- error BK1506
- 译作:《50 Android Hacks》中文版:《打造高质量Android应用:Android开发必知的50个诀窍》
- Handler sendMessage 与 obtainMessage (sendToTarget)比较
- You cannot combine custom titles with other title features
- 快排
- Winform捕获全局异常
- jQuery实现列表自动循环滚动鼠标悬停时停止滚动
- 对随机梯度下降的一些使用心得
- 【PyQt4实例7】QPainter坐标系的变换【转载】
- jq 使用手册
- 卓有成效的敏捷开发流程
- 高级语法-省略
- win7系统下64位Qt的编译