博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quick Sort(三向切分的快速排序)(Java)
阅读量:5981 次
发布时间:2019-06-20

本文共 1155 字,大约阅读时间需要 3 分钟。

1 //三向切分的快速排序 2 //这种切分方法对于数组中有大量重复元素的情况有比较大的性能提升 3  4 public static void main(String[] args) 5 { 6     Scanner input = new Scanner(System.in); 7     int n = input.nextInt(); 8     int[] a = new int[n]; 9         10     for(int i = 0; i < a.length; i++)11     a[i] = (int)(Math.random() * 100);12     //System.out.println(Arrays.toString(a));13     long start = System.currentTimeMillis();14     qsort3way(a, 0, a.length - 1);15     long end = System.currentTimeMillis();16     //System.out.println(Arrays.toString(a));17     System.out.println(end - start);18     //10000000个测试数据用时350ms 相比普通快速排序提升约35%的性能19 }    20 21 public static void qsort3way(int[] a, int front, int rear)22 {23     if(front >= rear)24     return;25     26     int key_index = front, i = front + 1, j = rear;27     while(i <= j)28     {29     if(a[i] < a[key_index])   //key_index永远指向第一个key值30         swap(a, i++, key_index++);  31     else if(a[i] > a[key_index])32         swap(a, i, j--);33     else   //a[i] = a[key_index] 34         i++;35     }36 37     qsort3way(a, front, key_index - 1);38     qsort3way(a, j + 1, rear);39 }

 

转载于:https://www.cnblogs.com/Huayra/p/10623680.html

你可能感兴趣的文章
SharePoint:如何根据用户身份来自动控制Portal的Logo显示
查看>>
设计微服务的最佳实践
查看>>
后缀.COLORIT勒索病毒分析和解决方案,.COLORIT勒索病毒如何处理
查看>>
在做推荐系统前,请先避免这几个问题
查看>>
docs
查看>>
在日本,CNC已经可以实现纳米级加工了……
查看>>
利用stdin stdout stderr及POSIX-linux机制重定向写日志
查看>>
Sketch技巧—数字运算改变图层
查看>>
oracle RAC数据库建立STANDBY(二)
查看>>
oracle RAC环境LOGICAL STANDBY的SWITCHOVER
查看>>
Java面试题
查看>>
MySQL配置主从同步总结
查看>>
ZeroClipboard 简单应用
查看>>
项目成本管理总结
查看>>
C#.NET通用权限管理在DB2数据库上运行的脚本参考 - 序列创建脚本参考
查看>>
学习笔记7——在CentOS中修改中文字符集
查看>>
mongoDB系列之--入门(一)
查看>>
用Windows Server 2012 R2 搭建二层证书服务结构 Part 5
查看>>
防伪税控开票的功能
查看>>
imp指定默认表空间
查看>>