最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 插入排序之希爾排序的實(shí)例

 更新時(shí)間:2017年07月08日 14:58:38   投稿:lqh  
這篇文章主要介紹了Java 插入排序之希爾排序的實(shí)例的相關(guān)資料,需要的朋友可以參考下

Java 插入排序之希爾排序的實(shí)例

Java代碼 

/*希爾排序(Shell Sort)是插入排序的一種。其基本思想是:先取定一個(gè)小于n的整數(shù)d1作為第一個(gè)增量,把文件的全部記錄分成d1 
   * 個(gè)組,所有距離為d1的倍數(shù)的記錄放在同一個(gè)組中,在各個(gè)組中進(jìn)行插入排序;然后,取第二個(gè)增量d2<d1,重復(fù)上述的分組和排序, 
   * 直至所取的增量dt=1(dt<dt-1<...<d2<d1),即所有記錄放在同一組中進(jìn)行直接插入排序?yàn)橹埂?
   * new int[]{8,5,1,7,9,4,6},開始分割集合的間隔長(zhǎng)度為3的情況,[[6][3][0]比較排序后,[4]和[1]比較排序后,[5]和[2]比較排序后, 
   * 分割集合的間隔長(zhǎng)度為1,這時(shí)[1]和[0]比較排序后,[2][1][0]....,和直接插入排序一樣了。*/ 
  public static void shellSort(int[] intArray) { 
     System.out.print("將要排序的數(shù)組為:    "); 
     for(int k=0;k<intArray.length;k++) 
        System.out.print(" "+intArray[k]+" "); 
      System.out.println(); 
     
    int arrayLength=intArray.length; 
    int j,k;//循環(huán)變量 
    int temp;//暫存變量 
    boolean isChange;//數(shù)據(jù)是否改變 
    int dataLength;//分割集合的間隔長(zhǎng)度 
    int pointer;//進(jìn)行處理的位置 
    dataLength=arrayLength/2;//初始集合間隔長(zhǎng)度 
    while(dataLength!=0){//數(shù)列仍可進(jìn)行分割 
      //對(duì)各個(gè)集合進(jìn)行處理 
      for(j=dataLength;j<arrayLength;j++){ 
        isChange=false; 
        temp=intArray[j];//暫存,待交換值時(shí)用 
        pointer=j-dataLength;//計(jì)算進(jìn)行處理的位置 
        //進(jìn)行集合內(nèi)數(shù)值的比較與交換值 
        while(temp<intArray[pointer]&&pointer>=0&&pointer<arrayLength){ 
          intArray[pointer+dataLength]=intArray[pointer]; 
          //計(jì)算下一個(gè)欲進(jìn)行處理的位置 
          pointer=pointer-dataLength; 
          isChange=true; 
          System.out.print("every changing result: "); 
          for(k=0;k<arrayLength;k++) 
            System.out.print(" "+intArray[k]+" "); 
          System.out.println(); 
          if(pointer<0||pointer>arrayLength) 
            break; 
        } 
        //與最后的數(shù)值交換 
        intArray[pointer+dataLength]=temp; 
        if(isChange){ 
          System.out.print("Current sorting result: "); 
          for(k=0;k<arrayLength;k++) 
            System.out.print(" "+intArray[k]+" "); 
          System.out.println(); 
        } 
      } 
      System.out.print("指定分割集合的間隔長(zhǎng)度為"+dataLength+",對(duì)各個(gè)集合進(jìn)行處理后,Current sorting result: "); 
      for(k=0;k<arrayLength;k++) 
        System.out.print(" "+intArray[k]+" "); 
      System.out.println(); 
      dataLength=dataLength/2;//計(jì)算下次分割的間隔長(zhǎng)度 
    } 
  } 

 運(yùn)行后的結(jié)果為:

Java代碼 

將要排序的數(shù)組為:     8 5 1 7 9 4 6  
every changing result: 8 5 1 8 9 4 6  
Current sorting result: 7 5 1 8 9 4 6  
every changing result: 7 5 1 8 9 4 8  
every changing result: 7 5 1 7 9 4 8  
Current sorting result: 6 5 1 7 9 4 8  
指定分割集合的間隔長(zhǎng)度為3,對(duì)各個(gè)集合進(jìn)行處理后,Current sorting result: 6 5 1 7 9 4 8  
every changing result: 6 6 1 7 9 4 8  
Current sorting result: 5 6 1 7 9 4 8  
every changing result: 5 6 6 7 9 4 8  
every changing result: 5 5 6 7 9 4 8  
Current sorting result: 1 5 6 7 9 4 8  
every changing result: 1 5 6 7 9 9 8  
every changing result: 1 5 6 7 7 9 8  
every changing result: 1 5 6 6 7 9 8  
every changing result: 1 5 5 6 7 9 8  
Current sorting result: 1 4 5 6 7 9 8  
every changing result: 1 4 5 6 7 9 9  
Current sorting result: 1 4 5 6 7 8 9  
指定分割集合的間隔長(zhǎng)度為1,對(duì)各個(gè)集合進(jìn)行處理后,Current sorting result: 1 4 5 6 7 8 9 

 當(dāng)分割的間隔為1時(shí),變成了直接插入排序。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Mybatis如何實(shí)現(xiàn)關(guān)聯(lián)屬性懶加載

    Mybatis如何實(shí)現(xiàn)關(guān)聯(lián)屬性懶加載

    這篇文章主要介紹了Mybatis如何實(shí)現(xiàn)關(guān)聯(lián)屬性懶加載的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法

    SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法

    本篇文章主要介紹了SpringBoot 實(shí)戰(zhàn) 之 優(yōu)雅終止服務(wù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • 在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置

    在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置

    本文探討了在Spring Boot項(xiàng)目中引入本地JAR包的步驟和必要的配置,通過使用Maven的system作用域,開發(fā)者可以將自定義的本地庫(kù)或功能集成到Spring Boot應(yīng)用程序中,,需要的朋友可以參考下
    2023-10-10
  • SpringCloud?openfeign聲明式服務(wù)調(diào)用實(shí)現(xiàn)方法介紹

    SpringCloud?openfeign聲明式服務(wù)調(diào)用實(shí)現(xiàn)方法介紹

    在springcloud中,openfeign是取代了feign作為負(fù)載均衡組件的,feign最早是netflix提供的,他是一個(gè)輕量級(jí)的支持RESTful的http服務(wù)調(diào)用框架,內(nèi)置了ribbon,而ribbon可以提供負(fù)載均衡機(jī)制,因此feign可以作為一個(gè)負(fù)載均衡的遠(yuǎn)程服務(wù)調(diào)用框架使用
    2022-12-12
  • 如何解決java:錯(cuò)誤:無效的源發(fā)行版:16

    如何解決java:錯(cuò)誤:無效的源發(fā)行版:16

    這篇文章主要介紹了如何解決java:錯(cuò)誤: 無效的源發(fā)行版:16問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • JAVA操作MongoDB數(shù)據(jù)庫(kù)實(shí)例教程

    JAVA操作MongoDB數(shù)據(jù)庫(kù)實(shí)例教程

    MongoDB是一個(gè)文檔型數(shù)據(jù)庫(kù),是NOSQL家族中最重要的成員之一,下面這篇文章主要給大家介紹了關(guān)于JAVA操作MongoDB數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Java數(shù)組使用binarySearch()方法查找指定元素的實(shí)現(xiàn)

    Java數(shù)組使用binarySearch()方法查找指定元素的實(shí)現(xiàn)

    這篇文章主要介紹了Java數(shù)組使用binarySearch()方法查找指定元素的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 利用JStack排查死鎖問題和CPU100%問題

    利用JStack排查死鎖問題和CPU100%問題

    無論是再面試過程中還是再實(shí)際項(xiàng)目開發(fā)當(dāng)中我們都有可能遇到這兩個(gè)問題如何利用JStack排查死鎖問題和CPU100%問題,文中給出了詳細(xì)的排查過程和解決方法,需要的朋友可以參考下
    2023-12-12
  • Springboot常用注解及作用說明

    Springboot常用注解及作用說明

    這篇文章主要介紹了Springboot常用注解及作用說明,Springboot開發(fā)中注解是非常重要的不可或缺的,那么Springboot中有哪些常用的注解呢,今天我們就來看一下這些注解和其作用,需要的朋友可以參考下
    2023-08-08
  • java巧用@Convert實(shí)現(xiàn)表字段自動(dòng)轉(zhuǎn)entity

    java巧用@Convert實(shí)現(xiàn)表字段自動(dòng)轉(zhuǎn)entity

    本文主要介紹了java巧用@Convert實(shí)現(xiàn)表字段自動(dòng)轉(zhuǎn)entity,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07

最新評(píng)論

定结县| 高邑县| 靖安县| 西和县| 沙雅县| 新和县| 桃园市| 洛南县| 无极县| 沂水县| 永定县| 正定县| 澄江县| 静安区| 镇沅| 兰西县| 射洪县| 台南市| 尉氏县| 阜宁县| 余干县| 金阳县| 厦门市| 永平县| 稷山县| 安义县| 建水县| 孟村| 泰州市| 盘山县| 宁阳县| 保山市| 吉首市| 五家渠市| 文登市| 顺昌县| 蒙自县| 北辰区| 海淀区| 南通市| 辽阳市|