黑马程序员技术博客之希尔排序

发布时间:2016-12-8 6:16:59 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"黑马程序员技术博客之希尔排序",主要涉及到黑马程序员技术博客之希尔排序方面的内容,对于黑马程序员技术博客之希尔排序感兴趣的同学可以参考一下。

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 以下是我编写的希尔排序代码: /** 我对希尔排序的粗浅理解: 先对数组中小标间隔为一定值的数进行排序 而后逐渐缩小这种间隔,直至间隔为1,完成排序 @author shine */ import java.util.Arrays; public class Shine01{ public static void main(String[] args){ int[] ints = {12,34,5,54,35,2,78,62,85,35,9,6,18,24,38,42}; System.out.println(Arrays.toString(order(ints))); } public static int[] order(int[] ints){ int d = ints.length; while(true){ d = d/2; for(int i=0; i<d; i++){ //下面这个嵌套for循环实际上实现了...>a[i+2d]>=a[i+d]>=a[i]的功能 for(int j=i+d; j<ints.length; j+=d){ int temp = ints[j]; int k; for(k=j-d; k>=0&&ints[k]>temp; k-=d){ ints[k+d] = ints[k]; } ints[k+d] = temp; } } //具体实现方法如下: //首先保证所有下标间隔为d的数间的排序,如:a[8]>a[0],a[9]>a[1],a[10]>a[2]…… //随后缩小下标的间隔,如:a[12]>a[8]>=a[4]>=a[0],a[13]>a[9]>=a[5]>=a[1]…… //并进一步缩小,如:a[14]>a[12]>a[10]>a[8]>a[6]>a[4]>a[2]>a[0],…… //直至d=1,即:a[15]>a[14]>a[13]>a[12]>……,至此排序完成 if(d==1) return ints; } } }一时兴起就写了这个代码,算法参考了一个哥们用C写的一段代码,也看了百度百科对希尔排序的分析,但感觉讲的不太清晰。

上一篇:决明子
下一篇:一道面试题统计胜负数的

相关文章

相关评论