用c语言 已知数组 data 中有如下元素:22,54,19,27,25,12,63,99,277,189;输入一 个 x,然后在数组中查找 x,如果找到,输出相应的下标,否则,输出"Not Found”。
/// <summary>
/// 二分查找记录以及插入的下标(前提是:要把对象数组排好序 此处为升序)
/// </summary>
/// <param name="value">关键值(对象中用于排序的属性值)</param>
/// <param name="list">源对象数组</param>
/// <param name="start">起始位置</param>
/// <param name="end">结束位置</param>
/// <param name="ipos">应该插入的位置</param>
/// <returns>返回查找元素的位置,找不到返回-1</returns>
public int find2(string value, ModelList list, int start, int end,ref int ipos)
{
int temp = -1;
int position = -1;
while (start <= end)
{
position = (start + end) / 2;//折半
if (string.Compare(value, list[position].Name, true) > 0)//如果要查找或要插入的元素在左半侧
{
start = position + 1;
ipos = position+1;
}
else if (string.Compare(value, list[position].Name, true) < 0)//如果要查找或要插入的元素在右半侧
{
end = position - 1;
ipos = position;
}
else//如果找到要查找或要插入的元素 返回位置并跳出循环
{
temp = position;//返回所在位置
ipos = position;
break;
}
}
return temp;
}