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

java高級排序之希爾排序

 更新時間:2015年04月08日 22:46:11   投稿:mdxy-dxy  
這篇文章主要介紹了java高級排序之希爾排序 ,需要的朋友可以參考下

希爾排序?qū)τ诙噙_幾千個數(shù)據(jù)項的,中等大小規(guī)模的數(shù)組排序表現(xiàn)良好,希爾排序不像快速排序和其它時間復雜度為O(n*logn)的排序算法那么快,因此,對非常大的文件排序,它不是最優(yōu)選擇,但是希爾排序比選擇排序和插入排序這種時間復雜度為O(n²)的排序要快的多,并且它非常容易實現(xiàn),代碼簡短

  希爾排序也是插入排序的一種,在插入排序中,如果最小的數(shù)在最后面,則復制的次數(shù)太多,而希爾解決了這個問題,它也是n-增量排序,它的思想是通過加大插入排序中元素的間隔,并在這些有間隔的元素中進行插入排序,當這些數(shù)據(jù)項排過一趟序后,希爾排序算法減小數(shù)據(jù)項的間隔再進行排序,依此進行下去。進行這些排序時數(shù)據(jù)項之間的間隔被稱為增量,并且習慣上用字母h來表示。

  對于某個馬上要進行希爾排序的數(shù)組,開始的間隔應該更大,然后間隔不段減小,直到間隔變?yōu)?.

間隔序列:

  間隔序列中的數(shù)字素質(zhì)通常被認為很重要-除了1之外它們沒有公約數(shù),這個約束條件使每趟排序更有可能保持前一趟排序已排好的效果,對于不同的間隔序列,有一個絕對的條件,就是逐漸減小的間隔最后一定要等于1.因此最后一趟是一次普通的插入排序。

  下面列出的例子是h=h*3+1的規(guī)律得出的:

package com.jll.sort;
public class ShellSort {
  int[] arr;
  int size;
  
  public ShellSort() {
    super();
  }
  
  public ShellSort(int size) {
    this.size = size;
    arr = new int[size];
  }

  /**
   * @param args
   */
  public static void main(String[] args) {
    ShellSort ss = new ShellSort(10);
    for(int i=0;i<10;i++){
      ss.arr[i] = (int) ((Math.random()*100)+1);
      System.out.print(ss.arr[i]+" ");
    }
    ss.shellSort();
    System.out.println();
    System.out.println("after sort:");
    for(int i=0;i<10;i++){
      System.out.print(ss.arr[i]+" ");
    }
    
  }
  
  public void shellSort(){
    int h = 1;
    while(h<=size/3){
      h = h*3+1;
    }
    for(;h>0;h=(h-1)/3){
      for(int i=h;i<size;i++){
        int temp = arr[i];
        int j = i;
          while(j>h-1&&arr[j-h]>temp){
            arr[j]=arr[j-h];
            j-=h;
          }
          arr[j]=temp;
        }
      }
    }
  }

相關(guān)文章

  • JavaWeb Maven詳解相關(guān)配置

    JavaWeb Maven詳解相關(guān)配置

    這篇文章主要介紹了使用maven架構(gòu)管理開發(fā)的相關(guān)配置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Springboot的啟動原理詳細解讀

    Springboot的啟動原理詳細解讀

    這篇文章主要介紹了Springboot的啟動原理詳細解讀,springboot項目一般都是打包成jar包直接運行main方法啟動,當然也可以跟傳統(tǒng)的項目一樣打包war包放在tomcat里面啟動.那么springboot怎么直接通過main方法啟動呢,需要的朋友可以參考下
    2023-11-11
  • swing jtextArea滾動條和文字縮放效果

    swing jtextArea滾動條和文字縮放效果

    這篇文章主要為大家詳細介紹了swing jtextArea滾動條和文字縮放效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Springboot如何配置yml文件與映射到j(luò)ava類

    Springboot如何配置yml文件與映射到j(luò)ava類

    這篇文章主要介紹了Springboot如何配置yml文件與映射到j(luò)ava類問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • spring使用@Async注解導致循環(huán)依賴問題異常的排查記錄

    spring使用@Async注解導致循環(huán)依賴問題異常的排查記錄

    這篇文章主要介紹了spring使用@Async注解導致循環(huán)依賴問題異常的排查記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • JavaWeb三大組件之一的Filter詳解

    JavaWeb三大組件之一的Filter詳解

    本篇文章主要介紹了JavaWeb三大組件之中的Filter過濾器詳解,實例分析了JavaWeb之Filter過濾器的使用技巧,非常具有實用價值,需要的朋友可以參考下
    2022-06-06
  • spring boot在啟動項目之后執(zhí)行的實現(xiàn)方法

    spring boot在啟動項目之后執(zhí)行的實現(xiàn)方法

    在開發(fā)時有時候需要在整個應用開始運行時執(zhí)行一些特定代碼,比如初始化環(huán)境,下面這篇文章就來給大家介紹了關(guān)于spring boot在啟動項目之后執(zhí)行自己要執(zhí)行的東西的實現(xiàn)方法,文中給出了詳細的示例代碼,需要的朋友可以參考下。
    2017-09-09
  • 詳解JVM類加載機制及類緩存問題的處理方法

    詳解JVM類加載機制及類緩存問題的處理方法

    這篇文章主要給大家介紹了關(guān)于JVM類加載機制及類緩存問題的處理方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • springBoot service層事務(wù)控制的操作

    springBoot service層事務(wù)控制的操作

    這篇文章主要介紹了springBoot service層事務(wù)控制的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java在Excel中創(chuàng)建多級分組、折疊或展開分組的實現(xiàn)

    Java在Excel中創(chuàng)建多級分組、折疊或展開分組的實現(xiàn)

    這篇文章主要介紹了Java在Excel中創(chuàng)建多級分組、折疊或展開分組的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05

最新評論