Open a-mochi opened 8 years ago
コンテナ
コンテナ…複数のものを入れるもの。 rubyだと、ArrayとかHashとか。
なぜ色々な種類のコンテナがあるのか。 それぞれに長所と短所があるからです。
メモリはコインロッカー!
連結リストがすごくわかった
配列は、要素を途中に挿入するコストが高い
配列はなんかこう色々とコストかかる
配列は不便でダメ
配列は、「何番目を取り出す」というときには早くて便利
配列は瞬速
O記法(オーダーの考え方)について
O記法 オーダーきほう
O(1):コンテナのサイズにかかわらず、コストが同じ
なんかすごい数学の話
分数出てきた
数学ならっとけばよかった
アルゴリズムの速さの話をするときにはオーダーの考え方が必須
rubyはなんでも入る
rubyの配列にはなんでも入るが、ようは裏でポインタのリストみたいになってる
rubyで指定の場所に挿入するやつ:insert http://ref.xaio.jp/ruby/classes/array/insert
animals = ["mouse", "cow", "tiger", "rabbit", "dragon"]
animals.insert(1, "cat") # 2番目に挿入
animals.insert(-2, "dog", "pig") # 末尾から2番目に2つ挿入
p animals
# ["mouse", "cat", "cow", "tiger", "rabbit", "dog", "pig", "dragon"]
ハッシュテーブルの図(図9.7)がよくわからない
ハッシュ関数:なんかよくわからないけどすごい関数
なんらかの数字?を返す。
ここで言えば、"Ichiro"
といれると434
とでてくる。
ハッシュ関数すごい
入力に対して出力(意味のない数字)が絶対同じ
ハナコは絶対にハナコ
ハッシュ値っていつも見てるよね。 gitで、コミットに対して、SHA-1のハッシュ値(40桁(よく先頭7桁だけ見るやつ))
gitのコミットにハッシュ値がメジャー(らしい)
木は速い
あれ、ハッシュの方が速い
ただしハッシュテーブルは、大きな配列が必要なのですっごいメモリ食う (最近はいろいろ研究されていてある程度効率的になってはいたりするけど)
結論:自分で考える
自分の置かれた状況に応じて適切なバランスを見極める!
rubyだと実質そんなに気にすることとかないなー
rubyの連結リスト:標準にはない。gemで作ってる人とかはいるらしい
廣戸、望月、鈴木、石橋