1. 程式人生 > >排序算法入門之希爾排序(java實現)

排序算法入門之希爾排序(java實現)

入門 介紹 插入 一次 變化 shells ngx i++ ava

希爾排序是對插入排序的改進。插入排序是前面元素已經有序了,移動元素是一個一個一次往後移動,當插入的元素比前面排好序的所有元素都小時,則需要將前面所有元素都往後移動。希爾排序有了自己的增量,可以理解為插入排序的增量為1,希爾排序增量是gap。代碼就是在插入排序代碼的基礎上多了一層增量變化的循環。可以參考http://www.cnblogs.com/chengxiao/p/6104371.html,博主作了詳盡介紹。

  public static void shellSort(int[] a){

    int j;

    for(int gap=a.length/2;gap>0;gap/=2)

      for(int i=gap;i<a.length;i++){

        int tmp=a[i];

        for(j=i;j>=gap&&tmp<a[j-gap];j-=gap)

          a[j]=a[j-gap];

      a[j]=tmp;

  }

}

排序算法入門之希爾排序(java實現)