タグ付けされた質問 「quicksort」


6
JavaのArrays.sortメソッドは、異なる型に対して2つの異なるソートアルゴリズムを使用するのはなぜですか?
Java 6のArrays.sortメソッドは、プリミティブの配列にはQuicksortを使用し、オブジェクトの配列にはマージソートを使用します。ほとんどの場合、クイックソートはマージソートよりも高速で、メモリの消費量も少ないと思います。私の実験は、両方のアルゴリズムがO(n log(n))ですが、それをサポートしています。では、なぜ異なるタイプに異なるアルゴリズムが使用されるのでしょうか?

11
ミニマリストのHaskellクイックソートが「真の」クイックソートではないのはなぜですか?
HaskellのWebサイトには、以下に示すように、非常に魅力的な5行のクイックソート機能が導入されています。 quicksort [] = [] quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) where lesser = filter (< p) xs greater = filter (>= p) xs また、「CでのTrueクイックソート」も含まれています。 // To sort array a[] of size n: qsort(a,0,n-1) void qsort(int a[], int lo, int hi) { int h, l, p, …

13
クイックソート:ピボットの選択
Quicksortを実装する場合、ピボットを選択する必要があります。しかし、以下のような疑似コードを見ると、ピボットをどのように選択すればよいかわかりません。リストの最初の要素?他に何か? function quicksort(array) var list less, greater if length(array) ≤ 1 return array select and remove a pivot value pivot from array for each x in array if x ≤ pivot then append x to less else append x to greater return concatenate(quicksort(less), pivot, quicksort(greater)) ピボットを選択する概念と、異なるシナリオが異なる戦略を必要とするかどうかを誰かが私に理解するのを助けることができますか?


30
Pythonを使用したクイックソート
私はpythonをまったく使っていないので、それにクイックソートを実装しようとしています。誰かが私のコードを完成するのを手伝ってくれませんか? 3つの配列を連結して出力​​する方法がわかりません。 def sort(array=[12,4,5,6,7,3,1,15]): less = [] equal = [] greater = [] if len(array) > 1: pivot = array[0] for x in array: if x < pivot: less.append(x) if x == pivot: equal.append(x) if x > pivot: greater.append(x) sort(less) sort(pivot) sort(greater)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.