先将代码贴上,后续补充内容。
package com.sufa.test;
public class ShellSort {
/**
* @Title: main
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param @param args 设定文件
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = { 46, 58, 15, 45, 90, 18, 10, 62 };
shellSort(a);
for(int i=0;i<a.length;i++) {
System.out.println(a[i]);
}
}
/*
* 希尔排序
* */
public static void shellSort(int[] data) {
int length = data.length;
for(int d=length/2;d>=1;d= d/2) {
//分组间隔从数组的一半每次再逐步减半
for(int c=0;c<length-d;c++){
//多个分组内进行排序
//注意,间隔为d的所有数为一组
for(int i=c;i<length-d;i=i+d){
int j= i+d;
if(data[i] > data[j]) {
int tmp = data[j];
data[j] = data[i];
data[i] = tmp;
}
}
}
}
}
}