C#希爾排序

來源:互聯網
上載者:User
C#希爾排序

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  namespace Sort  {      class ShellSorter      {          public static int[] Sort(int[] a)          {              ShellSort(a);              return  a;          }          public static void ShellSort(int[] myArray)          {              int i, j, increment;              int temp;              for (increment = myArray.Length / 2; increment > 0; increment /= 2)              {                  for (i = increment; i < myArray.Length; i++)                  {                      temp = myArray[i];                      for (j = i; j >= increment; j -= increment)                      {                          if (temp < myArray[j - increment])                              myArray[j] = myArray[j - increment];                          else                              break;                      }                      myArray[j] = temp;                  }              }          }      }  }

希爾排序是對直接插入排序演算法的改進,其主要思想是:先將整個排序數列分割成為若干個子序列,在子序列分別進行直接插入排序,待整個數列基本有序時再對全部進行一次直接插入排序。以此來形成新的有序數列。一般分割方法是兩個元素相距d=n/2,n/4,n/8……以此類推。
1.基本思想:
把整個待排序的資料元素分成若干個小組,對同一小組內的資料元素用直接插入法排序;小組的個數逐次縮小,當完成了所有資料元素都在一個組內的排序後排序過程結束。
2.技巧:
小組的構成不是簡單地“逐段分割”,而是將相隔某個增量dk的記錄組成一個小組,讓增量dk逐趟縮短(例如依次取5,3,1),直到dk=1為止。
3.優點:
讓關鍵字值小的元素能很快前移,且序列若基本有序時,再用直接插入排序處理,時間效率會高很多。

例子一:

例子二:

流程圖

對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知:如果資料的本身就是有序的或者本身基本有序,那麼效率就會得到提高。

以上就是C#,希爾排序的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.