java希尔排序

希尔排序(Shell Sort)是插入排序的一种,是针对直接插入排序算法的改进,该方法又称缩小增量排序。

希尔算法的思想描述:

在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为
增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。

希尔算法的流程实现


简单的实例:

class EasyTestPlace{
        public static void main(String[] args) {
		int[] a = {9,18,2,5,21,4,12,1,33,87};
		new EasyTestPlace().shellArray(a);
	}
	// 希尔排序主体
	public void shellArray(int[] a){
		for(int i=a.length/2;i>0;i/=2){ //对排序数列设置增量,并确定外围循环次数
			for(int j=0;j= d) && (A[j] < A[j - d]); j -= d) {
				t = A[j];
				A[j] = A[j - d];
				A[j - d] = t;
			}
		}
	}
}

你可能感兴趣的:(java排序)