On Github nigohiroki / 20120927_LightningTalk
「問題の解法で有限時間内に解が得られるもの」
問題を解くための方法、その中で答えが出るもの
条件: データ数 n
どちらが早いか?
大規模データから特徴を抽出→カテゴライズ
マーケティングやコンテンツに
バブルソート平均 O(n^2)
クイックソート平均 O(n log n)
平均ではクイックソートの方が早い!
1 class Bubble 2 def sort(data) 3 for i in 0...data.length-1 4 for j in 0...data.length-1-i 5 data[j+1],data[j] = data[j],data[j+1] if data[j] > data[j+1] 6 end 7 end 8 return data 9 end 10 end
1 class Quick 2 def left(piv, data) 3 data.select{ |i| i < piv} 4 end 5 def right(piv, data) 6 data.select{ |i| i >= piv} 7 end 8 9 def sort(data) 10 return data if data.length.zero? 11 piv = data.shift 12 sort(left(piv,data)) + [piv] + sort(right(piv,data)) 13 end 14 end
線形探索平均 O(n)
2分探索平均 O(log n)
平均では2分探索の方が早い!ただし整列されている必要がある。
「あなたへのオススメ」を提案するアルゴリズム
自分と一番近い人を決定 MAX(1 / 1 + length)
一番近い人の1位を推薦
アルゴリズムを利用したアプリケーションの開発を
アルゴリズムのコーディングはプログラミング技術の向上に!!