ソートアルゴリズム - ソートシェル

基本的な考え方

ヒルは、また、狭いインクリメント一種として知られ、また、効率の他の大きな改善を教えるために挿入ソートソート挿入ソートです。
 D = N / 2
にソートD配列の群、各群直接挿入ソート
③減少 D = D / 2、Dのまで、②繰り返し= 1

すべてのデータのための最後の旅行のアルゴリズムであった直接挿入ソート、その結果が正しくなければなりません。

基本的な考え方は次のとおり全体の最初の行は、その後、「実質的に規則的」であることを直接挿入ソートのすべてのレコードを全体シーケンスを記録し、記録されたシーケンスは、それぞれ直接挿入ソートいくつかのサブシーケンスに分割されます。

ヒルソートへの旅プロセス

    いくつかのサブへの記録シーケンス各直接挿入ソートのための配列の各サブシーケンス。

たとえば、次の n個の にレコード Dサブ:

 

例:

注:のためにD = 1 旅行、データをソートする前に、ほとんどされている正シーケンス

 それは「増分」シーケンスは、いくつかの数学の未解決の問題がある機能を、撮影したために時間があるので、分析のシェルソートは、複雑な問題です。これまで誰もが最高の増分シーケンスの1を得られなかったが、多くの研究は、いくつかの部分的な結論を出すことでした。インクリメンタル・シーケンスと指摘した場合、ヒルは時間複雑ソートtは時間、ソートの数です、なお:配列におけるインクリメンタル値は1以外の共通の要因はならない、と最後のインクリメント値が1に等しくなければなりません。

 読みやすくするために、増分直接法を用いた以外は、本実施の形態2。

 アルゴリズムコード

1  // シェルソート
2  空隙シェルソート(INT * ARR、INT N-)
 3。 {
 4。     int型I、J;
 5      int型のTEMP;
 6      INT D = N / 2 ; //は、初期値をインクリメント
7。     一方、(D> 0// 各サイクル増分が低減される
8。     {
 9。         ための(I = D、I <N - 、Iは++)// 時間は2 * dを超え、数のいずれかの後ろに、前部要素及び対照群の後ろに続けます要素、複数の衝撃か否かを
10          {
 11。              TEMP = ARR [I]; // グループDの要素離間した位置直接挿入ソート
12              のための( - ; J> = D J = 0 && TEMP <ARR [J]; J - = D)
 13              {
 14                  ARR [J + D] =のARR [J]。
15              }
 16の              ARR [J + 1 D] = TEMP。
17          }
 18          D = D / 2// 减小增量
19      }
 20 }

 アルゴリズム分析

 シェルソート不安定なソートアルゴリズムである、時間の複雑さは約ですO(N1.3)。

 

おすすめ

転載: www.cnblogs.com/WindSun/p/11360646.html