コンピュータープログラミング

プログラミング方法として、クイックソート

1960年、K. A.霜が最も有名になった、情報を迅速にソートする方法を開発しました。 それはポジティブな特性をたくさん持っているとして、今日では広く、プログラミングで使用されている:それは一般的なケースのために使用することができ、それはリストや実装が容易なの異なるタイプと互換性の追加メモリのわずかな増加を必要とします。 しかし、クイックソートを持っている欠点は、あります使用しての作業は、多くのミスを認め、それがやや不安定です。

しかし、それは最も研究されたバージョンです。 最初の支払いホーアの後、多くの人がその密研究を行います。 大規模なベースは実証的証拠によって支えられて仕事に費やした時間を見つけることの理論的な質問、に設立されました。 基本的なアルゴリズムと増加速度を向上させるための本当の提案がありました。

クイックソートは、それがどこでも見つけることができる、非常に一般的です。 その根拠にする方法は、Delphi、それはC ++で、qsort関数を完了するのに要した時間のライブラリ関数(1を除く)すべてのバージョンに存在TList.Sortを、実装されています。

操作の基本的な原理は、「分割統治」として配合することができます。 これは、2つのグループにリストを破壊し、それ自体でパートごとにソートされているが発生します。 基本要素によって決定され、比較的彼のリスト全体を再配置している:より多くの注目は、以下が発生した時の分離方法、に支払われるべきということになります。 候補群の左側に組み込み、その値は、他のすべての転送ルールよりも小さいです。 これは、ソートされたリストの主な要素は、その正当な場所であることが判明しました。 次段 - ベースに対して要素の両側の課題再帰ソート機能。 これは、プロセスは、リストをソートするだけで一つの要素が、含まれている場合にのみ機能します終了します。 従って、クイックソートなどのプログラミング機能を習得するためには、低レベルのアルゴリズムの作業を知る必要がある:a)基材の選択。 b)は、最も効果的な順列のリストは小さく、大きな値を持つ2つのセットを生成します。

第一原理に精通。 ベース部材を選択するとき、理想的に平均のリストから選択する必要があります。 その後、休憩に2等分されます。 ただ、計算し た平均値 リストでは非常に困難である、そうでも最速のソートは、この計算側をバイパスします。 しかし、最大値または最小値との基本的な要素の選択 - もない最良の選択肢。 ケースの一方のそのような決意は、空のリストが保証、及び第二のフルする作成します。 したがって、ベース部材としての平均値に近いものを選択したが、最大及び最小にされるべきであるという結論。

選択が決定されると、あなたは分解アルゴリズムに進むことができます。 このいわゆるインナーはクイックソートをループします。 すべては2つのラピッドアクセス指標に基づいて構築されています。最初は右から左へ、逆に、左から右への要素の上に第2に行きます。 操作の実行権を開始します:インデックスがリストにあり、メインにすべての値を比較します。 要素がベースライン以下であるときにサイクルが完了する。 つまり、そこに比較は、インデックスの値を減少させます。 左手の作業は以上の値を終了したとき。 ここでは、比較値が上昇します。

クイックソートを含む分割アルゴリズムのこの段階で、2つの状況が生じる可能性があります。 最初は左のインデックスが右よりも小さいことです。 これは、エラーを示し、それがリストに記載された要素が間違った順序でありますされています。 出力 - 彼らの場所を変更します。 カラムの両方に等しいか超えたときに、第2の状況です。 これはつまり、作業が完了しました、リストの分離の成功を示しています。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ja.atomiyme.com. Theme powered by WordPress.