C# C语言中的二进制搜索

C# C语言中的二进制搜索,c#,C#,我正在尝试对一个有10个数字的随机数组进行二进制搜索。当我运行我的代码时,我输入的数字是随机数组中的一个数字,而不是只输出一次Find it,它将持续输出Find it,直到我关闭程序,但我无法理解我做了什么使它继续输出Find it 使用制度; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Threading.Tasks; 名称空间二进制搜索 { 班级计划 { 静态环[]args { int n=10;//数组中有1

我正在尝试对一个有10个数字的随机数组进行二进制搜索。当我运行我的代码时,我输入的数字是随机数组中的一个数字,而不是只输出一次Find it,它将持续输出Find it,直到我关闭程序,但我无法理解我做了什么使它继续输出Find it

使用制度; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Threading.Tasks; 名称空间二进制搜索 { 班级计划 { 静态环[]args { int n=10;//数组中有10个值 随机r=新随机; int b;//要搜索的值 int i;//循环控制值 int[]a=新的int[n+1]; [0]=0;//从0开始
对于i=1;i由于您的do while条件,find it消息会一直被打印。您会进入一个无限循环,因为经过多次迭代,min等于max。
将条件设置为while min将条件设置为while min
if (a[mid] == b)
{
    Console.WriteLine("Found it");
    break; // add this
}

一旦找到循环,就需要中断/停止循环

if (a[mid] == b)
{
    Console.WriteLine("Found it");
    break; // add this
}

您需要使用break退出循环,或使用return退出方法。您是否尝试过将return语句放在find it行之后。您的工作完成了;宣布胜利并回家。这可能是您熟悉调试器的好时机。在find it行上放置一个断点并开始steppingHey,仅供参考。仅限二进制搜索适用于排序数组。使用未排序的随机数组时,您不会总是得到正确的答案。您需要使用break退出循环或return退出方法。您是否尝试在find it行之后放置return语句。您的工作完成了;宣布胜利并回家。这可能是熟悉debu的好时机在Find it行上放置一个断点,然后开始steppingHey,仅供参考。二进制搜索仅适用于已排序的数组。对于未排序的随机数组,您不会总是得到正确的答案。