フェーズの概要(4) - O(N Nログ)、パフォーマンスのクイックソートはより良いヒープソートよりもあるとなぜ同じですか?

平均的な場合、時間の複雑クイックソートとヒープソートにO(N Nログ)、時間複雑度ヒープソートクイック時間の複雑さよりもより安定です。

クイックソートの最悪の場合の時間複雑であるためO(n²)。

しかし、実際のソフトウェア開発では、クイックソート良いヒープソートよりもパフォーマンスの。なぜ?

 

理由は2つあります

 

ヒープソートデータアクセスがフレンドリーをソートする全く簡単な方法ではありません

 

クイックソートのために、データが順次アクセスされます。

ヒープの並べ替えのために、データがダンスをアクセスしています。

例えば、ヒープソートの処理スタックは、スタックの一番上のヒープは、順次、配列の添字1,2,4,8要素にアクセスします

むしろ部分的なシーケンシャルアクセスとしてクイックソートよりも、そう、そうCPUキャッシュ非友好的なもの。

 

同じデータの場合、ソート処理では、回数データをソートより迅速に、ヒープソートアルゴリズムを交換します

順序と逆度の度合いのソートコンセプト

アルゴリズムをソートするための比較に基づいて、プロセスをソート全体は、二つの基本的な操作からなる比較およびスワップ(または移動)されます。

クイックソートデータの数は、これ以上の逆度よりも交換していません。

最初のステップは、パイル構築プロセスは、元のデータの順番の低い程度で、その結果、元のデータの相対的順序を破壊する、ヒープ・ソート・ヒープを構築することです。

例えば、データセットのデータを渡した後、ヒープの建設を命じたが、より無秩序になってきました。 

公開された113元の記事 ウォン称賛25 ビュー30000 +

おすすめ

転載: blog.csdn.net/qq_42006733/article/details/104697369