VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之C# -- 二分法查找

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

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

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

2.代码运行结果:


相关教程