基本的な考え方
ヒルは、また、狭いインクリメント一種として知られ、また、効率の他の大きな改善を教えるために挿入ソートソート挿入ソートです。
① 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)。