1つの#include " pch.h "
2の#include <iostreamの>
3。 ボイドシェルソート(INT * A、INT N-)
4。 {
5。 int型D;
6 INT J;
7 INT I;
8 int型K;
9 int型TEMP;
10 用( = N-D / 2 ; D> = 1 ; D = D / 2){ // 各数値サブポイントへ、そして何回分割の合計、それぞれの場合分けで
11。 ため(J = 0 ; J < D、J ++){ //各部門、dはサブシーケンスであり、正確に、それぞれが最初の要素のための動作のシーケンスに対応する
12ことである ため(IがJ + dを=、I <N - 、IがI + Dを=){ // 各第1要素第二の要素から始まる最初のソート順序、
13である TEMP = ; A [I]
14 - K = I D;
15 ながら(K> = 0 && A [K]> TEMP)
16 {
17。 A [K + D ] = A [K]、
18は K = K - D;
19 }
20 A [K + D] = TEMP;
21れる }
22である }
23のIS }
24 / * ため(INT 1 = J; J <N-; J ++)
25 {
26であり ; //は、ソート順序の左側に、第二の要素から開始キーA = [J] int型
27 Iは、J = INT - 1。 //インデックスレコードは、最後の要素のシーケンス順序付け
28 ながら//前後に、その結果、次の選択された要素の要素及びソートコンパレータのそれぞれ(&& [I]が>キーI> = 0)
29 {/をあれば、最初の要素が位置に挿入されるよりも小さくなるまで、それは選択された下位より大きい限り/要素
30 [I + 1]; [I] =
31である i--;
32 }
33である [I + 1] =キー、
34である } * /
35 }
36 INT メイン(){
37 [ int型 A [8 ] = { 4、2、3、7、6、9、8、5 }。
38 シェルソート(8 )。
39 のために(INT K = 0 ; K < 8 ; K ++ ){
40 のstd :: COUT << [K] << " " 。
41 }
42 }