经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C# -- 二分法查找
来源:cnblogs  作者:在代码的世界里游走  时间:2018/10/23 9:29:19  对本文有异议

二分法查找:适用于已经排序好的数组

1.二分法查找(入门案例)

  1. 1 static void Main(string[] args)
  2. 2 {
  3. 3 int[] myNums = { 1, 13, 22, 34, 56, 143, 167, 211, 266, 363, 466, 572, 595, 645, 688, 689, 702, 779, 888,899,922 };
  4. 4
  5. 5 Console.WriteLine("我的数组是:");
  6. 6 for (int i = 0; i < myNums.Length; i++)
  7. 7 {
  8. 8 Console.Write("{0} ",myNums[i]);
  9. 9 }
  10. 10 Console.WriteLine();
  11. 11
  12. 12 //使用二分法从数组查找指定值
  13. 13 //取得查找值在数组中的索引位置
  14. 14 int QueryValueIndex = QueryFromTwoParts(688, myNums, 0, myNums.Length - 1);
  15. 15 Console.WriteLine("--------------------------------------------------------");
  16. 16 Console.WriteLine("查找值688在数组中的索引位置是:{0}",QueryValueIndex);
  17. 17 Console.WriteLine("数组myNums索引位置{0}处的值是:{1}",QueryValueIndex,myNums[QueryValueIndex]);
  18. 18
  19. 19 Console.ReadKey();
  20. 20 }
  21. 21
  22. 22
  23. 23 //该方法返回的是查找值在数组中的索引位置
  24. 24 private static int QueryFromTwoParts(int QueryValue, int[] nums, int leftIndex, int rightIndex)
  25. 25 {
  26. 26 //计算数组中间值的在数组中的索引位置
  27. 27 int midValueIndex = (leftIndex + rightIndex + 1) / 2;
  28. 28
  29. 29 //取得数组中间索引位置处的值
  30. 30 int midValue = nums[midValueIndex];
  31. 31
  32. 32 //比较中间值与查找值的大小,确定下一步该怎样继续查询
  33. 33 if (QueryValue ==midValue)
  34. 34 {
  35. 35 return midValueIndex;
  36. 36 }
  37. 37 else if (QueryValue<midValue)
  38. 38 {
  39. 39 return QueryFromTwoParts(QueryValue, nums, leftIndex, midValueIndex);
  40. 40 }
  41. 41 else
  42. 42 {
  43. 43 return QueryFromTwoParts(QueryValue, nums, midValueIndex, rightIndex);
  44. 44 }
  45. 45
  46. 46 }

2.代码运行结果:

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

本站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号