算法 第四版 2.3.6
2017-09-12 16:03
106 查看
package Cap2_3; import edu.princeton.cs.introcs.StdDraw; import edu.princeton.cs.introcs.StdOut; import edu.princeton.cs.introcs.StdRandom; import Cap2_1.SortCompare; import Cap2_1.SortTemplate; public class Quick3way extends SortTemplate{ private static int cnt=0; public static void sort(Comparable[] a){ StdRandom.shuffle(a); sort(a, 0, a.length-1); } public static void sort(Comparable[] a, int lo, int hi){ if(hi <= lo) return; int lt = lo, i = lo + 1, gt = hi; Comparable v = a[lo]; while(i <= gt){ cnt++; // 比较 int cmp = a[i].compareTo(v); if (cmp<0) exch(a, i++, lt++); else if (cmp>0) exch(a, i, gt--); else i++; } sort(a, lo, lt-1); sort(a, gt+1, hi); //重复部分不用管了; } public static void main(String[] args) { // TODO Auto-generated method stub StdDraw.setXscale(0, 3); StdDraw.setYscale(-1, 200000); int cnt=0; for(int N=100;N<=10000;N*=10){ Quick3way.cnt=0; sort(SortCompare.randomInput(N)); double t = Quick3way.cnt; double st = N*2*Math.log(N); StdOut.println(t+ " " + st); StdDraw.setPenColor(StdDraw.RED); StdDraw.filledRectangle(0.5+cnt, st/2, 0.3, st/2); StdDraw.setPenColor(StdDraw.BLUE); StdDraw.filledRectangle(0.5+cnt, t/2, 0.3, t/2); cnt++; } } }
相关文章推荐
- 算法(第四版)学习笔记之java实现归并排序
- 算法-第四版-练习1.2.6解答
- 算法-第四版-练习1.2.18解答
- 算法(第四版)第一章笔记
- 算法-第四版-练习1.3.14解答
- 算法-第四版-练习1.3.18解答
- 算法-第四版-练习1.3.27解答
- Algorithms4 《算法》第四版 内容整理第一章干货
- 配置《算法 第四版》的Eclipse开发环境
- 《算法》(第四版)第一章练习题Java实现[3]
- 算法(第四版)——04希尔排序
- 算法-第四版-练习1.3.32解答
- 算法-第四版-练习1.3.16解答
- 算法-第四版-练习1.3.4解答
- 算法-第四版-练习1.2.7解答
- 算法(第四版)1.1基础编程模型练习1.1.1-1.1.8
- 算法(第四版)学习笔记之java实现栈和队列(链表实现)
- 算法 第四版 2.2.8
- 算法-第四版-练习1.2.19解答
- 《算法》第四版 cmd快速到达目录 记录