CSharp examples for System:Array Search
Binary Search generic array
// Apache License 2.0 (Apache) using System;//from w w w .j a v a 2 s. co m public class Main{ // This function is called when the user doesn't specify any comparer. // Since T is constrained here, we can call IComparable<T>.CompareTo here. // We can avoid boxing for value type and casting for reference types. private static int BinarySearch(T[] array, int index, int length, T value) { int lo = index; int hi = index + length - 1; while (lo <= hi) { int i = lo + ((hi - lo) >> 1); int order; if (array[i] == null) { order = (value == null) ? 0 : -1; } else { order = array[i].CompareTo(value); } if (order == 0) { return i; } if (order < 0) { lo = i + 1; } else { hi = i - 1; } } return ~lo; } public int BinarySearch(T[] array, int index, int length, T value, IComparer<T> comparer) { try { if (comparer == null || comparer == Comparer<T>.Default) { return BinarySearch(array, index, length, value); } else { return ArraySortHelper<T>.InternalBinarySearch(array, index, length, value, comparer); } } catch (Exception e) { throw new InvalidOperationException("InvalidOperation_IComparerFailed"); } } }