マージソートやクイックソートソート大規模データに適しています。どちらも、パーティションのアイデアを使用しました。
マージソート
非常にシンプルなのマージソートの核となるアイデア、あなたは配列をソートしたい場合は、私たち最初の配列は、それぞれ、フロントとリアの両方の部分、その後、途中から前後に二つの部分に分かれて並べ替えた後、両方の部分が再び一緒に組み合わされてソートされます。分割ルールダウンステップによってこの工程は、より小さなサブ問題に全体のソートを解決します。
これは再帰的であるので、その次のように終了条件がある見つけます:
merge_sort(P ... R)=マージ(merge_sort(P ...中央)、merge_sort(中央+ 1 ... R)
ここでp>何の分解を継続しなかったとき= R、または、もし途中= // 2、==中央の1はもはや分解し続けたときに真ん中。
次のように再帰的な式を説明します。
DEFマージ(左:リスト、右:リスト) - > リスト: TEMP = リスト() 場合は左[-1] <= 右の[0]: TEMP =左+ 右 戻り温度が あれば右の[-1] <= 左の[ 0]: TEMP =右側+ 左側 戻り温度 left_index = right_index = 0 一方(左)left_index <LEN と right_index < LEN(右) 場合に左[left_index < 右[right_index]: (左[left_index])temp.append left_index + = 1 他: temp.append(右[right_index]) right_index + = 1 であれば left_index == LEN(左): 温度 + = 右[right_index:] 他: TEMP + = 左[left_index:] 戻りTEMP DEF merge_sort(LI:リスト) - > リスト: 場合 lenの(LI)<= 1 : 戻りのLi 中央 = lenは(LI)// 2 左 = merge_sort(LI [:中央]) 右 = merge_sort(LI [中央:]) リターン・マージ(左、右)