---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
private void button1_Click(object sender, EventArgs e)
{
int[] a = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};//数组
int key = int.Parse(txtKey.Text);//找到要搜索的那个KEY
int location = BindarySearch(a, key);//位置
s.Text += "位置"+location;
if (location == -1)
{
s.Text += "未发现";
}
}
public int BindarySearch(int[] array, int key)//返回所在的位置
{
int low = 0, high = array.Length - 1;
int middle;
while (low <= high)
{
middle = (low + high) / 2;
if (array[middle] == key)
{
return middle;
}
else if (array[middle] > key)
{
high = middle - 1;
}
else
{
low = middle + 1;
}
s.Text += middle.ToString()+" ";
}
return -1;
}
折半法判断,更加适用于排序号的数组,查找元素的位置
线性查找则更适合于乱序数组。
程序员不能瞎大方!!!!严谨性,不能随意的扩大折半数组的长度
if (array[middle] == key)
{
return middle;
}
else if (array[middle] > key)
{
high = middle - 1;(本想+1又何妨)
}
else
{
low = middle + 1;(-1更广范围的判断)
}