Index of /diary/index.php/2004/07/19 NameLast modifiedSizeDescription Parent Directory - 0/2016-01-06 09:45 - Apache/2.4.10 (Debian) Server at www.jmuk.org Port 80
Index of /diary/index.php/2004/07/19 NameLast modifiedSizeDescription Parent Directory - 0/2016-01-06 09:45 - Apache/2.4.10 (Debian) Server at www.jmuk.org Port 80
id:sawat:20061123の記述に関して。 クイックソートとマージソートの話で、クイックソートは安定でないということが書かれているが、そういう風に書くとさすがに嘘じゃないか?と思ったので。安定と言うのはこの場合、リスト中に同じ大きさの要素があった場合に、その順序が入れ替わらないことを言う。 クイックソートで第一に重要になるのはピボット選択(つまり、比較対象の選択)だが、これをもし仮にリスト(or配列)の中から取ってくるとすると、その値をどこに入れるのか。その作業で不安定になることがある。しかし、クイックソートはリストの対象を二つに分割するわけだが、その操作においては安定であるようにすることが可能である。例えばHaskellなどでよく使われるクイックソートは、 quicksort :: Ord a => [a] -> [a] quicksort = quicksort (x:xs)
ref:落ちてないけど堕ちている - 「安定」なクイックソート stable な quick sort もあるよ、という話なのだが。 quicksort :: Ord a => [a] -> [a] quicksort [] = [] quicksort (x:xs) = quicksort [ y | y <- xs, y < x ] ++ [x] ++ quicksort [ y | y <- xs, y >= x ]これは遅そうだなぁ。in-place にはできないのか?じゃないとメモリ消費量がすごそう。 ただし、このようなことをする場合には内部的にmallocが必要となる(リストだし・・・)。 連結リストだからといって毎回動的メモリ確保が必要かといえばそうでもない。必要なサイズがあらかじめ分かれば1度大きな配列を作ってインデックスをポインタ代わりに使えば済む。 そもそも、問題は m
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く