希尔排序:在插入排序的基础上 先对数组设置一个 递减的增量 increment ,对每个增量里面的所有数组组合进行插入排序,效率比直接插入排序要高,但是不稳定。
具体测试小例子:
public static void main(String[] args) {
// TODO Auto-generated method stub
long [] a = {10,123,32,76,123,54,36,67,89,93,23,544,232,111123};
// for(int j=0;j<a.length;j++){
// System.out.print(a[j]+" ");
// }
for(int increment = a.length/2;increment>0;increment/=2){ // 循环增量
for(int i=0;i<increment;i++){//循环每个增量里面的子数组 总共子数组时 increment 个
//对每个子数组 进行插入排序
insertSort(a,i+1,increment); // a代表整个数组 ,I代表 在该增量 下的 第几个子数组
System.out.println(" ");
}
}
//输出数组
for(int j=0;j<a.length;j++){
System.out.print(a[j]+" ");
}
}
private static void insertSort(long [] a,int i ,int inc) { // a代表整个数组 ,I代表 在该增量 下的 第几个子数组
long tempData ;
int k,j;
System.out.print(i+" ");
for( k=i+inc;k<=a.length;k+=inc){ // 从每个子数组的第二个开始 循环代插入的数
System.out.print(k+" ");
tempData = a[k-1];// 把待排序 数组的 第二 个数 放 入临时 变量
j =k-inc-1;//前一个数
// 把每个临时变量比较后插入到 已经排序号的数组
while(j>=0&&tempData<a[j]){ // 按照 升序排列
a[j+inc]=a[j]; // 后移数组
j-=inc;
}
a[j+inc]=tempData; // 因为是 j-=inc 后 把 代插入的数 插入,则需+inc
}
}
分享到:
相关推荐
希尔排序 希尔排序希尔排序希尔排序希尔排序希尔排序希尔排序希尔排序
希尔排序
希尔排序
按下标的一定增量分组,对每组使用直接插入算法排序;随着增量 * 逐渐减少,每组包含的关键字越来越多,当增量减至1时,整个文件恰 * 好被分成一组,算法便终止。 * 8,9,1,7,2,3,5,4,6,0 * //初始增量 gap=...
NULL 博文链接:https://128kj.iteye.com/blog/1662282
希尔排序Java语言的易懂解释,本人Google搜索求得最佳答案,希望可以与朋友分享,给同样疑惑的朋友带来帮助。
希尔排序代码,其中是希尔排序的代码部分,又不知道的可以进来看一下
该资源提供了一份全面的指南,介绍了如何在Java中实现希尔排序。文档中涵盖了希尔排序的基本概念,包括如何对数组进行排序以及如何在Java中实现希尔排序。此外,文档还包括一个逐步指南,介绍如何在Java中实现希尔...
希尔排序 希尔排序.java 使用Java实现
在Java中,希尔排序的实现通常涉及两个嵌套的循环,外层循环控制增量的减小,内层循环则执行分组内的插入排序。虽然希尔排序的增量序列没有固定的规则,但通过合理的选择,希尔排序仍然是一种高效的排序算法。
用java语言实现冒泡排序、插入排序、堆排序、快速排序、归并排序、希尔排序、桶排序,并且对各种排序算法进行性能的比较。
快速排序、归并排序、希尔排序、冒泡排序、选择排序、插入排序等8中排序方式原理分析java实现
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
Java实现希尔排序.rar
NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1867491
详解Java常用排序算法-希尔排序
JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,包括算法的详细介绍,以及对几种算法的详细测试
八种排序算法原理及Java实现( 冒泡排序+快速排序直接插入排序+希尔排序+选择排序+归并排序+基数排序)
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
八大排序java实现版本,直接插入排序、折半插入排序、冒泡排序、简单选择排序、希尔插入排序、快速排序 、堆排序、2-路归并排序 、基数排序,并有时间比较,博文...