二分搜索用於在已經排序好的集合中搜索值,每次與中間值對比,小於則搜索前半段,大於中間值則在後半段,繼續二分搜索,實現代碼: 如果查詢不到值返回的是負的最後查詢的中間值的位置,負值變正後+1 則可用來有序插入搜索值,使列表保持排序。 ...
二分搜索用於在已經排序好的集合中搜索值,每次與中間值對比,小於則搜索前半段,大於中間值則在後半段,繼續二分搜索,實現代碼:
/// <summary> /// 二分查找 /// </summary> /// <param name="arr">已經排序過的數組</param> /// <param name="searchkey">搜索值</param> /// <returns></returns> private static int BinarySearch(int[] arr, int searchkey) { int start = 0; int end = arr.Length - 1; int mid = 0; while (start <= end) { mid = (start + end) / 2; if (arr[mid] < searchkey) //中間值小於 搜索值,說明要查找值在尾部 { start = mid + 1; } else if (arr[mid] > searchkey)//中間值大於搜索值,說明要搜索值在首部 { end = mid - 1; } else { return mid; } } return -mid; }
如果查詢不到值返回的是負的最後查詢的中間值的位置,負值變正後+1 則可用來有序插入搜索值,使列表保持排序。