1. 程式人生 > >希爾排序執行步驟分析

希爾排序執行步驟分析

private static void swap2(int []arr,int a,int b){
        int av = arr[a];
        arr[a] = arr[b];
        arr[b] = av;
    }


private static void test(int arr[]){
	for (int gap = arr.length/2;gap>0;gap = gap/2){
		for (int i=gap;i<arr.length;i++){
			int j=i;
			while (j-gap >=0 && arr[j] < arr[j-gap]){
				swap2(arr,j,j-gap);
				j = j-gap;
			}
		}
	}
}

public static void main(String []args){
	int[] arr1 = new int[]{1,4,2,7,9,8,3,6,0,-1};
	test(arr1);
	System.out.println(Arrays.toString(arr1));
}
第一次 j和k跨度5執行步驟

第二次 j和k跨度2執行步驟


第三次 j和k跨度1執行步驟