クイックソートが「クイックソート」と呼ばれるのはなぜですか?


9

この質問の目的は、他の並べ替えアルゴリズムに対してこのメ​​リットを議論することではありません-これを行う他の多くの質問があります。この質問は名前についてです。クイックソートが「クイックソート」と呼ばれるのはなぜですか?確かに、それはほとんどの場合「迅速」ですが、常にというわけではありません。O(N ^ 2)に退化する可能性はよく知られています。この問題を軽減するさまざまな変更がクイックソートにありますが、最悪の場合を保証されたO(n log n)に下げるものは、一般にクイックソートと呼ばれなくなりました。(例:Introsort)。

よく知られているすべてのソートアルゴリズムのなかで、これが「クイック」という名前に値する唯一の理由であることに疑問を感じます。これは、アルゴリズムの動作方法ではなく、通常(通常)の速度を表します。Mergesortは、データをマージするため、それと呼ばれています。ヒープを使用するため、ヒープソートと呼ばれています。Introsortは、QuicksortからHeapsortに切り替えるタイミングを決定するために自身のパフォーマンスを監視するため、「Introspective」からその名前を得ています。同様に、すべての遅いもの(バブルソート、挿入ソート、選択ソートなど)についても同様です。私が考えることができる他の唯一の例外は「Bogosort」です。これは実際には誰も実際に実際に使用したことのない単なる冗談です。クイックソートが「パーティションソート」や「ピボットソート」など、より説明的なものと呼ばれないのはなぜですか。それが実際に何をしているのか?それは「最初にここに来た」の場合でさえありません。MergesortはQuicksortの15年前に開発されました。(ウィキペディアによると、それぞれ1945年と1960年)

これは、プログラミングの問題というより、歴史の問題だと思います。私はそれがどのように名前を付けたのか興味があります-それはちょうど良いマーケティングでしたか?


1
改良されたクイックソートであるTimsortは、その機能にちなんで名前が付けられたのではなく、発明者から名付けられました。flashsortintrosortなどの名前は、アルゴリズムについてもあまりわかりません。
vartec 2013年

What's in a name? that which we call a rose By any other name would smell as sweet;それまたは同じくらい速くなります。さらに、O(N ^ 2)に縮退する可能性は発生する可能性がほとんどなく、N LogNは、アルゴリズムが今日より高速であるにもかかわらず、かなり良いアルゴリズムです。その上、もっと速いものが登場する頃には手遅れで、誰もがすでにQuicksortと呼んでいました!
Ampt 2013年

1
@vartec Timsortは実際にはQuicksortではなくMergesortから派生していますが、同意しますが、これは別の例外です。Introsortはアルゴリズム全体を提供するわけではありませんが、少なくともそれがどのように機能するかを説明します-それは「内省的」です。私はあまり馴染みのないFlashsortですが、これは、各要素を「フラッシュ」して、それがどこにあるべきかを最もよく推測するためです。
ダレルホフマン

1
@Ampt実際には、Quicksortの最も基本的な形式では、O(N ^ 2)のケースは、データが既にソートされているか、ほぼソートされている一般的なケースの可能性が非常に高いです。確かに、Median-of-3やランダムピボットなどのその後の開発により、それははるかにまれになりましたが、その名前は、そのような改善のない実装にも使用されています。
ダレルホフマン2013

どうやら、それはQuickestよりも良いですか?
JeffO 2013年

回答:


13

1962年のソートアルゴリズムに関する研究は今日ほど進んでおらず、コンピューターサイエンティストのトニーホアールは他のアルゴリズムよりも速い新しいアルゴリズムを発見したため、クイックソート呼ばれる論文を発表し、その論文の引用が続いた。

要約を引用する:

コンピュータのランダムアクセスストアでの新しい並べ替え方法について説明します。この方法は、速度、ストレージの経済性、プログラミングの容易さにおいて、他の既知の方法と比較して非常に優れています。内部ループの最適化に役立つ可能性のある、この方法の特定の改良点については、論文の後半で説明します。


リンクされたPDFの11ページの脚注は、1961年に発行されたQuicksortに関する以前の論文があったことを示唆しています。その論文は、論文の最後にある「参照」セクションでも言及されています。
FrustratedWithFormsDesigner 2013年

1961年、Algorythm 64:Quicksort
Pieter B

これは、私が得そうな正しい答えに近いと思います。それはがそれ命名したかを説明します、より新しく、潜在的に高速な代替が存在する場合、なぜその名前がまだ使用されているのかは説明ません。よく読んでください。60年代に遡って、どれだけ現代のテクノロジーに適用できるかを見るのは興味深いことです。
Darrel Hoffman 2013

3
@DarrelHoffmanなぜ名前が変わるのですか?どの時点で、アルゴリズムQuicksortを呼び出すことの欠点が、みんなにPartitionSortなどと呼ばせようとするコストを上回りますか?
プロフィラ14

0

もともとは発明者にちなんでHoare Sortと呼ばれていたと思いますが、Hoareが英語で売春婦に近い音を出すため、かなり早く名前が変わりました。彼らが他の何かの代わりに「クイック」を選んだ理由については、私にはわかりません。


-1

それは、発明された時点では、すべてよりも非常に高速だったためです(または、速度はデータの種類に大きく依存し、場合によっては他のアルゴリズムがクイックソートよりもはるかに高速になるため)アルゴリズムがあります。

だから、はい、それは歴史的です(しかし、その歴史は正確にはわかりませんが...)

しかし、その名前には代わりにアルゴリズムのヒントを含める必要があることに同意します...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.