本文共 690 字,大约阅读时间需要 2 分钟。
二分查找的前提是数据已经预先排序,而然后通过不断地缩小查找范围的方式来查找数据,C#的实现如下:
internal static int InternalBinarySearch(T[] array, int index, int length, T value, IComparer首先确定3个查找点,即 起点,中点,终点。comparer) { int num1 = index; int num2 = index + length - 1; while (num1 <= num2) { int index1 = num1 + (num2 - num1 >> 1); int num3 = comparer.Compare(array[index1], value); if (num3 == 0) return index1; if (num3 < 0) num1 = index1 + 1; else num2 = index1 - 1; } return ~num1; }
1,如果中点即是目标值,那么返回中点的值,如果大于中点值,则把范围确定为中点+1到终点,如果小于中点值,则把范围确定为起点到中点-1。
2,如此不断地修改起点和终点的值,直至找到。
注意这里没有用递归的方式。
转载地址:http://inlgb.baihongyu.com/