static boolean searchBis(int [] t, int k) { int low = -1 ; int high = t.length ; // -1 ≤ low < high ≤ n ∧ t[low] < k ≤ t[high] while (high-low > 1) { // -1 ≤ low < low+1 < high ≤ n ∧ t[low] < k ≤ t[high] int m = (low+high)/2 ; // -1 ≤ low < m < high ≤ n ∧ t[low] < k ≤ t[high] if (t[m] < k) { // -1 ≤ low < m < high ≤ n ∧ t[m] < k ≤ t[high] low = m ; // -1 ≤ low < high ≤ n ∧ t[low] < k ≤ t[high] } else // -1 ≤ low < m < high ≤ n ∧ t[low] < k ≤ t[m] high = m ; // -1 ≤ low < high ≤ n ∧ t[low] < k ≤ t[high] } // -1 ≤ low < high ≤ n ∧ high = low+1 ∧ t[low] k ≤ t[high] return high < t.length && t[high] == k ; } |