public static int Rank(int[] a, int key, int low, int high, Counter counter) { counter.Increment(); if (low > high) return -1; int mid = low + (high - low) / 2; if (key < a[mid]) return Rank(a, key, low, mid - 1, counter); else if (key > a[mid]) return Rank(a, key, mid + 1, high, counter); else return mid; }
public void E129() { var a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var counter = new Counter("Rank Counter"); Debug.WriteLine(Rank(a, 1, 0, a.Length, counter)); Debug.WriteLine(counter.ToString()); }