91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用Java實現一個希爾排序算法

發布時間:2020-11-26 15:39:44 來源:億速云 閱讀:123 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關怎么利用Java實現一個希爾排序算法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Java 實現希爾排序

Java代碼 

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

 運行后的結果為:

Java代碼 

將要排序的數組為:     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  
指定分割集合的間隔長度為3,對各個集合進行處理后,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  
指定分割集合的間隔長度為1,對各個集合進行處理后,Current sorting result: 1 4 5 6 7 8 9

上述就是小編為大家分享的怎么利用Java實現一個希爾排序算法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绵竹市| 都江堰市| 锡林郭勒盟| 三江| 桦甸市| 南康市| 兴业县| 弋阳县| 湖口县| 泰宁县| 阿坝| 洪江市| 徐州市| 当雄县| 昌邑市| 广灵县| 溆浦县| 南江县| 玛曲县| 铜陵市| 麟游县| 大埔区| 苏尼特右旗| 洛阳市| 恩施市| 鹤山市| 屯昌县| 普宁市| 舞阳县| 靖江市| 交城县| 邮箱| 措美县| 松潘县| 缙云县| 杭锦后旗| 库尔勒市| 武功县| 金乡县| 海安县| 丁青县|