二分探索アルゴリズム(Binary Search)
再帰が無ければ普通に読めるなあ
public boolean contains(int v, int[] vs){ if (vs.length == 0) return false; int left = 0, right = vs.length; while( left + 1 < right){ int mid = left + ( right -left ) / 2; if (v < vs[mid]) right = mid; else left = mid; } return v == vs[left]; }
しかしO(N)とかO(logN)とかなんとなくしか理解していない。アルゴリズムから数学的に計算量を算出する、、ってことがこの先出来るようになる気がしない。