タグ

sorting-algorithmとsortに関するnabinnoのブックマーク (3)

  • sort: improve average quicksort performance · golang/go@6f6b2f0

    - change way of protection from O(N^2) on duplicate values. Previous algorithm does additional comparisons and swaps on every split pass. Changed algorithm does one ordinal quicksort split pass, and if distribution is skewed, then additional pass to separate pivot's duplicates. Changed algorithm could be slower on very ununique slice, but it is still protected from O(N^2). - increase small slice s

    sort: improve average quicksort performance · golang/go@6f6b2f0
  • ソート - Wikipedia

    ソート (英: sort) は、データの集合を一定の規則に従って並べること[1]。日語では整列(せいれつ)、並べ替え(ならべかえ)、分類(ぶんるい)などと訳される[1]。 主に配列や連結リストのような、リストデータ構造に分類されるコレクション(コンテナ)に格納されている要素データを、全順序関係によって並べ替えることを指す。また、単に「ソート」といった場合、値の小さい方から大きい方へ順に並べる昇順(しょうじゅん、英: ascending order)を指すことが多い。その反対に値を大きい方から小さい方へ順に並べることを降順(こうじゅん、英: descending order)という。 対象となるコレクションのデータ構造や必要とされる出力、また時間的コストと空間的コストの兼ね合いによって、ソートに使われるアルゴリズムは異なる。 効率的なソートは、ソート済みのデータを必要とする他のアルゴリズム

  • クイックソート - Wikipedia

    クイックソート(英: quicksort)は、1960年にアントニー・ホーアが開発したソートのアルゴリズム。分割統治法の一種。 個のデータをソートする際の最良計算量および平均計算量は (ランダウの記号)である。他のソート法と比べて一般的に最も高速だと言われている[2]が、対象のデータの並びやデータの数によっては必ずしも速いわけではなく、最悪の計算量はである。安定ソートではない。 クイックソートは以下の手順で行われる。 ピボットの選択:適当な値(ピボット(英語版)という)を境界値として選択する 配列の分割:ピボット未満の要素を配列の先頭側に集め、ピボット未満の要素のみを含む区間とそれ以外に分割する 再帰:分割された区間に対し、再びピボットの選択と分割を行う ソート終了:分割区間が整列済みなら再帰を打ち切る 配列の分割方法の一例として、以下のようなものが考えられる: 配列要素からピボット P

    クイックソート - Wikipedia
  • 1