2008-08-01から1日間の記事一覧

クイックソート(quick sort)

疲れてきたのでコメント無し・・・。 def quick_sort(list) return list if list.length <= 1 base = list.pop before = [] after = [] list.each { |v|v <= base ? before.push(v) : after.push(v) } quick_sort(before) + [base] + quick_sort(after) end …

挿入ソート(insertion sort)

先頭から整列していき、整列部後方から挿入値を順次比較して適切な位置に挿入する。挿入と言いつつ、動きは交換交換の荒らしなんだよなぁ。結果的には挿入したように見えるんだけど。ちなみに自分で書けなくて Wikipedia を参考にした orz def insertion_sor…

選択ソート(selection sort)

配列の中から最大値(or 最小値)を探し、最後の要素と入れ換えていく。 これはサクッと実装できた。 def selection_sort(list) dup = list.dup (dup.length - 1).downto(0) {|limit| pos = 0 0.upto(limit) {|i| pos = i if dup[i] > dup[pos] } tmp = dup[li…

バブルソート(bubble sort)

隣り合う値を比較して入れ換えていき、右端から確定していく。 最初は再帰で書いてたんだけど必要ないことに気がついた。配列を汚染しないように dup でコピーを作ってからにしてみた。 def bubble_sort(list) dup = list.dup (dup.length - 1).downto(0) {|…

二分探索(binary search)

Ruby で実装してみたけどちょっと時間がかかってしまった。そんな自分に凹みんぐ。 def binary_search(target , list , l , h) return -1 if l > h i = ((h - l) / 2).floor + l return i if target == list[i] if list[i] > target return binary_search(ta…

数式を表示する

サポートしてるとは知らなかったのでテスト [tex:x^2 + y^2 = z^2] [tex:e^{i\pi} = -1]