binarysearch的问题(使用新值计算first,last,mid)
以下代码属于二进制搜索算法。用户在textbox1中输入数字,并在textbox2中输入他想要使用binarysearch查找的数字。
现在我有一个问题,我希望当mid,first,last的值再次改变它时会开始function.i意味着例如:when last = mid-1;函数再次开始并用last的新值计算(我在代码中注释了解更多解释)
谢谢
private void button1_Click(object sender, EventArgs e)
{
string strsearchnums = textBox2.Text;
int result = binarysearch(strsearchnums);
textBox14.Text = result.ToString();
}
public int binarysearch(string strsearchnum)
{
string[] source = textBox1.Text.Split(',');
int[] nums = new int[source.Length];
for (int i = 0; i < source.Length; i++)
{
nums[i] = Convert.ToInt32(source[i]);
}
int searchnum = Convert.ToInt32(strsearchnum);
int first = nums.First();
int last = nums.Last();
while (1 <= nums.Length - 1)
{
int mid = (int)Math.Floor(nums.Length / 2.0) - 1;
if (nums[0]> nums[nums.Length-1])
{
break;
}
if (searchnum < nums[mid])
{
last = mid - 1;
binarysearch(strsearchnum); ///i thought i should do like this but this isnt correct it becomes stackoverflow
}
if (searchnum > nums[mid])
{
first = mid + 1;
binarysearch(strsearchnum); ///i thought i should do like this but this isnt correct it becomes stackoverflow
}
if (searchnum == nums[mid])
{
return nums[mid];
}
}
return -1;
}
没有找到相关结果
已邀请:
4 个回复
驮帽俺篮号
死搭胯
的值 - 所以你总是得到一个Stackoverflow异常,因为它是无限递归。通常,对于递归二进制搜索,您希望binarySearch方法传递您要查找的数字,最小值和最大值,并根据二进制搜索算法修改最小值和最大值。方法签名应该是这样的
这应该可以帮助您入门。
鞋扣蚊冈借
淘圃跺枯替