用二分法查找数组a[10] = {2,3,6,1,9,8,7,4,0,5}中元素9
3个回答
展开全部
int Lookup(int find,int array[],int low,int high)
{
if (low > high)
return -1;//表示未找到元素
int mid = (low + high)/2
if (array[mid] == find)
return mid;//找到元素,元素的位置为mid
if (array[mid] > find)//如果大于要找的值则在下半区间继续找
return Lookup(find,array,low,mid - 1);
else //如果小于要找的值则在上半区间继续找
return Lookup(find,array,mid + 1,high);
}
void main()
{
//序列应该基本有序才能使用二分法
int a[10] = {0,1,2,3,4,5,6,7,8,9};
//序列对应的位置值
int position[10] = {8,3,0,1,7,9,2,6,5,4};
int pos = Lookup(9, a, 0, 9);
if (pos == -1)
{
printf("There is not 9 in the array");
return;
}
//输出映射的位置
printf("The position of 9 in the array is %d",position[pos]);
}
{
if (low > high)
return -1;//表示未找到元素
int mid = (low + high)/2
if (array[mid] == find)
return mid;//找到元素,元素的位置为mid
if (array[mid] > find)//如果大于要找的值则在下半区间继续找
return Lookup(find,array,low,mid - 1);
else //如果小于要找的值则在上半区间继续找
return Lookup(find,array,mid + 1,high);
}
void main()
{
//序列应该基本有序才能使用二分法
int a[10] = {0,1,2,3,4,5,6,7,8,9};
//序列对应的位置值
int position[10] = {8,3,0,1,7,9,2,6,5,4};
int pos = Lookup(9, a, 0, 9);
if (pos == -1)
{
printf("There is not 9 in the array");
return;
}
//输出映射的位置
printf("The position of 9 in the array is %d",position[pos]);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询