package sort_book_datastruction;
import java.util.Arrays;
/**
* 2017/4/1
* 希尔排序:是插入排序的一种,又称为缩小增量的插入排序或者分段排序
* 基本思想:将整个待排序序列分割成若干个待排序子序列;
* 对这些子序列分别进行排序,不断缩小增量,构成子序列,再排序;
* 当整个序列基本有序时,再对整个序列进行一次排序。
*操作方法:
* 1)选择一个增量序列,d={t1,t2,...tk};tk=1(增量序列的最后一项必须为1),该序列是减序列;
* 2)按增量序列的个数k,对序列进行k趟的排序
* 3)每趟排序根据对应的增量ti,对待排序列分割成长度为m的子序列,分别对各个子序列进行直接插入排序;
* @author Administrator
*
*/
public class ShellSort {
public void shellInsert(int[] array,int d){
for(int i =d;i<array.length;i++){
if(array[i]<array[i-d]){
int x = array[i];
int j = i - d;
while(j>0 && x<array[j]){
array[j+d]=array[j];
j=j-d;
}
array[j+d]=x;
}
}
}
public void shellSort(int[] array,int[] d){
for(int k =0;k<d.length;k++){
shellInsert(array,d[k]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ShellSort ss = new ShellSort();
int[] a={2,5,3,8,11,6,15,9,45,7,5};
int[] d ={6,3,1};
ss.shellSort(a, d);
System.out.println("a="+Arrays.toString(a));
}
}
java 希尔排序
最新推荐文章于 2023-12-07 09:05:35 发布