当前位置: 编程技术>java/j2ee
JAVA算法起步之快速排序实例
来源: 互联网 发布时间:2014-11-01
本文导语: 快速排序一听这个名字可能感觉很快,但是他的算法时间复杂度最坏情况却跟插入排序是一样的。之所以成为快速排序是因为他的平均效率比堆排序还要快,快速排序也是基于分治思想与归并排序差不多,但是快速排序是原址...
快速排序一听这个名字可能感觉很快,但是他的算法时间复杂度最坏情况却跟插入排序是一样的。之所以成为快速排序是因为他的平均效率比堆排序还要快,快速排序也是基于分治思想与归并排序差不多,但是快速排序是原址的,直接在原数组操作不需要再开辟新的存储空间。快速排序的思想很简单,就是选定一个关键字k将原数组分成两份g1与g2,g1中所有的元素都比k小或者相等,而g2中所有的数据都比k大或者等于,这样对g1与g2分别进行快速排序,最终我们得到的就是一个有序的数组。代码中的sort方法就是对刚才语句的描述。而关键的算法就是去寻找k的位置将原数组分为大小两部分的过程。方法getPlocation就是快速排序的核心。他的实现原理有点像插入排序只是有点像。每次都把map中end位置的元素作为关键字,通过与end元素对比将数组分成大小两部分,而i与j则是两个分割线,i与j之间的数都是比core大的元素,i与j就像一条贪吃蛇,当j的下一个数比core大的时候j+1,i到j的长度增大了,而如果比core小的话,i与j都向前走一下,并将那个小数放在i的前面。这样循环一遍后,start到end-1之间就是按大小分开的,最后将core放在中间,将core的位置返回就是分界线了。
代码如下:
public class QuickSort {
public int getPlocation(int[] map,int start,int end){
int core=map[end];
int i=start-1;
for(int j=start;j
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!