二分搜索算法
程序员文章站
2022-04-24 22:01:40
二分搜索用于在已经排序好的集合中搜索值,每次与中间值对比,小于则搜索前半段,大于中间值则在后半段,继续二分搜索,实现代码: 如果查询不到值返回的是负的最后查询的中间值的位置,负值变正后+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 则可用来有序插入搜索值,使列表保持排序。
上一篇: C# 通俗说 委托(和事件)