//author:lilywangcn
public class ShellSort {
private static int[] array=new int[]{10,30,20,4, 9,-1,6,15,12,8,0,20,4};
public static void main(String[] args){
print();
for(int gap=array.length/2; gap>0; gap/=2){
System.out.println("gap="+gap);
for(int i=0;i<gap;i++){
insertosrt(i,gap);
}
print();
}
// print();
}
private static void insertosrt(int i,int gap){
for(int j=1;i+gap*j<array.length;j++){
int tmp=array[i+gap*j];
int k=j-1;
while(k>=0&& i+gap*k>=0 &&array[i+gap*k]>tmp ){
array[i+gap*(k+1)]=array[i+gap*k];
// print();
k--;
}
array[i+gap*(k+1)]=tmp;
// print();
}
}
private static void print(){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println("");
}
}
算法复杂度:O(n*n),算法不稳定
运行结果:
10 30 20 4 9 -1 6 15 12 8 0 20 4
gap=6
4 15 12 4 0 -1 6 30 20 8 9 20 10
gap=3
4 0 -1 4 9 12 6 15 20 8 30 20 10
gap=1
-1 0 4 4 6 8 9 10 12 15 20 20 30
分享到:
相关推荐
C语言版的排序方法---希尔排序.非常有用的代码,可以实际中使用。
多线程实现排序算法的比较:希尔排序、快速排序、堆排序。用java语言实现,很经典,需要的可以下载看看!
就利用汇编版的希尔排序来写了一下超级列表框排序.发现,从取值-排序-显示过程才花了1秒的时间.速度是七号排序的30倍,凌晨孤星-超级列表框排序的3倍.而这个希尔排序模块.只用增加,删减自定义数据类型成员.即可变身另...
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
binary sort,二分法查找,binary search, 二分法排序,merge sort 混合排序,shell sort 希尔排序,insertion sort 插入排序。数据结构 data structure
希尔排序-flash演示
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
一个数据结构作业,对刚刚学习希尔排序知识的同学有用,用C++做的
(1) 完成5种常用内部排序算法的演示,5种排序算法为:快速排序,直接插入排序,选择排序,堆排序,希尔排序; (2) 待排序元素为整数,排序序列存储在数据文件中,要求排序元素不少于30个; (3) 演示程序开始,...
详解Java常用排序算法-希尔排序
输入n个整数,分别用希尔排序、快速排序、堆排序和归并排序实现由小到大排序并输出排序结果。要求n=10,15,20进行三组排序实验。 实验目的:掌握希尔排序、快速排序、堆排序、归并排序算法。 (zip中含代码及运行...
希尔排序 希尔排序希尔排序希尔排序希尔排序希尔排序希尔排序希尔排序
合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序的C语言实现,原创。
基于python的排序算法-希尔排序Shell Sort
附件提供的是C语言实现的希尔排序的代码,同时提供了代码实现的结果
算法-理论基础- 排序- 希尔排序(包含源程序).rar
希尔排序
数据结构 综合排序 冒泡排序 直接插入排序 快速排序 希尔排序,完整的代码,有每种排序时间的比较
用C++,模板写的 7中排序. 快速排序, 归并排序,插入排序,选择排序,起泡排序,堆排序,希尔排序