ちゃんと動くわけないお。 b参照してないお
if (b[middle] == searchKey) return middle;
あと size -1 を渡してるのがヘン。そもそも渡す必要は?