经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
二分搜索算法
来源:cnblogs  作者:_York  时间:2019/1/2 9:55:42  对本文有异议

二分搜索用于在已经排序好的集合中搜索值,每次与中间值对比,小于则搜索前半段,大于中间值则在后半段,继续二分搜索,实现代码:

  1. /// <summary>
  2. /// 二分查找
  3. /// </summary>
  4. /// <param name="arr">已经排序过的数组</param>
  5. /// <param name="searchkey">搜索值</param>
  6. /// <returns></returns>
  7. private static int BinarySearch(int[] arr, int searchkey)
  8. {
  9. int start = 0;
  10. int end = arr.Length - 1;
  11. int mid = 0;
  12. while (start <= end)
  13. {
  14. mid = (start + end) / 2;
  15. if (arr[mid] < searchkey) //中间值小于 搜索值,说明要查找值在尾部
  16. {
  17. start = mid + 1;
  18. }
  19. else if (arr[mid] > searchkey)//中间值大于搜索值,说明要搜索值在首部
  20. {
  21. end = mid - 1;
  22. }
  23. else
  24. {
  25. return mid;
  26. }
  27. }
  28. return -mid;
  29. }

如果查询不到值返回的是负的最后查询的中间值的位置,负值变正后+1 则可用来有序插入搜索值,使列表保持排序。

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号