欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 中基本算法之希爾排序的實例詳解

 更新時間:2017年07月28日 10:21:59   投稿:lqh  
這篇文章主要介紹了java 中基本算法之希爾排序的實例詳解的相關資料,這里提供簡單實現(xiàn)的實例,幫助大家學習理解此部分知識,需要的朋友可以參考下

java 中基本算法之希爾排序的實例詳解

希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序算法的一種更高效的改進版本。希爾排序是非穩(wěn)定排序算法。該方法因DL.Shell于1959年提出而得名。

希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序算法排序;隨著增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個文件恰被分成一組,算法便終止。

基本思想:算法先將要排序的一組數(shù)按某個增量d(n/2,n為要排序數(shù)的個數(shù))分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序, 然后再用一個較小的增量(d/2)對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序后,排序完成。

實例代碼:

public class ShellSort {

  /**
   * 原理:算法先將要排序的一組數(shù)按某個增量d(n/2,n為要排序數(shù)的個數(shù))分成若干組,每組中記錄的
   * 下標相差d.對每組中全部元素進行直接插入排序,然后再用一個較小的增量(d/2)對它進行分組,
   * 在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序后,排序完成。
   *
   * @author 阿信sxq-2015年7月16日
   *
   * @param args
   */
  public static void main(String[] args) {
    int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54,
         56, 17, 18, 23, 34, 15, 35, 25, 53, 51 };
    int d = a.length;
    int temp = 0;

    while (true) {
      d = d / 2;
      for (int x = 0; x < d; x++) {
        //對每一個組進行直接插入排序
        for (int i = x + d; i < a.length; i += d) {
          int j = i - d;
          temp = a[i];
          for (; j >= 0 && temp < a[j]; j -= d) {
            a[j + d] = a[j];
          }
          a[j + d] = temp;
        }
      }

      if (d == 1) {
        break;
      }
    }

    System.out.println(Arrays.toString(a));

  }

}




以上就是java 算法的希爾排序的講解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • SpringBoot使用Caffeine實現(xiàn)內(nèi)存緩存示例詳解

    SpringBoot使用Caffeine實現(xiàn)內(nèi)存緩存示例詳解

    caffeine提供了四種緩存策略:分別為手動加載、自動加載、異步手動加載、異步自動加載,這篇文章主要介紹了SpringBoot使用Caffeine實現(xiàn)內(nèi)存緩存,需要的朋友可以參考下
    2023-06-06
  • Java實現(xiàn)將String轉化為Int

    Java實現(xiàn)將String轉化為Int

    這篇文章主要介紹了Java實現(xiàn)將String轉化為Int方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Spring與bean有關的生命周期示例詳解

    Spring與bean有關的生命周期示例詳解

    這篇文章主要給大家介紹了關于Spring與bean有關的生命周期的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用Spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • Java關鍵字詳解之final static this super的用法

    Java關鍵字詳解之final static this super的用法

    this用來調用目前類自身的成員變量,super多用來調用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調用,下文將詳細介紹,需要的朋友可以參考下
    2021-10-10
  • mybatis返回類型map時如何將key大寫轉為小寫

    mybatis返回類型map時如何將key大寫轉為小寫

    這篇文章主要介紹了mybatis返回類型map時實現(xiàn)將key大寫轉為小寫操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Mybatis實現(xiàn)單個和批量定義別名typeAliases

    Mybatis實現(xiàn)單個和批量定義別名typeAliases

    這篇文章主要介紹了Mybatis實現(xiàn)單個和批量定義別名typeAliases,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java中的this、package、import示例詳解

    Java中的this、package、import示例詳解

    這篇文章主要介紹了Java中的this、package、import,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Java并發(fā)工具類CountDownLatch CyclicBarrier使用詳解

    Java并發(fā)工具類CountDownLatch CyclicBarrier使用詳解

    這篇文章主要為大家介紹了Java并發(fā)工具類CountDownLatch CyclicBarrier使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Apache Commons Math3學習之數(shù)值積分實例代碼

    Apache Commons Math3學習之數(shù)值積分實例代碼

    這篇文章主要介紹了Apache Commons Math3學習之數(shù)值積分實例代碼,涉及使用辛普森積分的例子,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • javax.servlet不存在的解決辦法

    javax.servlet不存在的解決辦法

    今天在關于servlet的編譯中出現(xiàn)了一下小小的錯誤,發(fā)現(xiàn)javax.servlet不存在,本文就介紹一下解決方法,感興趣的可以了解一下
    2021-07-07

最新評論