希尔排序 shell sort

希尔排序,类似于分块的插入排序。起先以一定间隔将序列分成几组,每组采用插入排序,随后缩小间隔,直至最后间隔为1,就是最终序列的排序。

public class ShellSort {
	
	public void shellSortTest(){
		int[] queue = new int[]{5,3,15,0,1,29,14,4,3,2,0};
		print(queue);
		shellSort(queue,0,queue.length-1);
		print(queue);
	}
	
	public void print(int[] queue){
		int length = queue.length;
		int index;
		for(index=0;index<length;index++){
			System.out.print(queue[index]+" ");
		}
		System.out.println();
	}

	public void shellSort(int[] queue,int left,int right){
		int i,j,temp,gap=right-left+1;
		do{
			gap=gap/3+1;
			System.out.println(gap);
			for(i=left+gap;i<=right;i++){
				if(queue[i]<queue[i-gap]){
					temp=queue[i];j=i-gap;
					do{
						queue[j+gap]=queue[j];j-=gap;
					}while(j>=left && temp<queue[j]);
					queue[j+gap]=temp;
				}
			}
		}while(gap>1);
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ShellSort ss = new ShellSort();
		ss.shellSortTest();
	}

}


你可能感兴趣的:(希尔排序 shell sort)