排序算法-----希爾排序

1959年Shell發明,第一個突破O(n^2)的排序算法,是簡單插入排序的改進版,它與插入排序的不同之處在於,他會優先比較距離較遠的元素,希爾排序又叫縮小增量排序。

  • 時間複雜度:O(n^1.3)
  • 空間複雜度:O(1)
  • 穩定性:不穩定
    在這裏插入圖片描述
package 排序算法;

import java.util.Arrays;
//O(n^1.3)
public class ShellSort {
    public static void main(String[] args) {
        int arr[] ={9,1,8,2,7,3,6,4,5};
        shellSort(arr);
        System.out.println(Arrays.toString(arr));
    }

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

執行結果

[1, 2, 3, 4, 5, 6, 7, 8, 9]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章