n レコードを持つテーブルの双方向マージ ソートの場合、マージ ソート全体を log2 n 回 (パス) 実行する必要があり、合計 n*log2 n レコードが移動されます。この文の具体的な説明。

免責事項: この記事には不備がある可能性がありますので、間違いがあった場合は修正し、丁寧にご連絡ください。

規則: log2 n は底 2、つまり n の対数を表します。

1. なぜ log2 を n 回実行する必要があるのですか?

双方向マージとは、双方向のデータを1つに結合することですが、逆に見ると、n個のデータを2で割って、nが1になるまで丸めることなので、log2のn回が必要になります。

マージツリーの観点から理解すると、少し面倒になります。(上記のマージ ツリーをよく見てください。実行する必要があるトリップ数 (レイヤー - 1) は、マージ ツリーの高さから 1 を引いたものです。次のロジックに準拠するには 1 つ減らす必要があることに注意してください。 n 個のレコードと合計 k 個のレイヤーの場合、2 ^(k-1) >= n となります。したがって、k-1>=log2 n、おおよそ log2 n と推定されます。)

2. nlog2n レコードを移動する必要があるのはなぜですか?

 上の図をよく見てください。マージ ソートでは、i と j が指す要素のサイズを比較し、小さい方を選択して、k が指す位置に格納します。データが k に保存されるたびに、レコードの移動が発生したと言います。したがって、各移動はレコードの移動の n 回発生します。合計 log2 n 回なので、合計 n*log2 n レコードが移動されます。

末尾に記載:該当写真はコンピュータ大学院入試機関より

Supongo que te gusta

Origin blog.csdn.net/fly_view/article/details/127754088
Recomendado
Clasificación