亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java高級(jí)排序之希爾排序

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

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

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

  對(duì)于某個(gè)馬上要進(jìn)行希爾排序的數(shù)組,開(kāi)始的間隔應(yīng)該更大,然后間隔不段減小,直到間隔變?yōu)?.

間隔序列:

  間隔序列中的數(shù)字素質(zhì)通常被認(rèn)為很重要-除了1之外它們沒(méi)有公約數(shù),這個(gè)約束條件使每趟排序更有可能保持前一趟排序已排好的效果,對(duì)于不同的間隔序列,有一個(gè)絕對(duì)的條件,就是逐漸減小的間隔最后一定要等于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)管理開(kāi)發(fā)的相關(guān)配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Springboot的啟動(dòng)原理詳細(xì)解讀

    Springboot的啟動(dòng)原理詳細(xì)解讀

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

    swing jtextArea滾動(dòng)條和文字縮放效果

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

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

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

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

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

    JavaWeb三大組件之一的Filter詳解

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

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

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

    詳解JVM類加載機(jī)制及類緩存問(wèn)題的處理方法

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

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

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

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

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

最新評(píng)論