c++用折半法查找数组中元素,自己编了一下,但不知道哪里错了

有15个数存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出“无此数”, 15个数用赋初值的方法在程序中给出,要找的数用scanf函数输入。
上面是原题,下面是我的代码:
#include<stdio.h>
void main()
{
int zhe_ban(int a[15],int n);
int a[15]={1,13,26,34,40,51,61,78,84,90,104,117,126,134,149};
int m,n;
printf("请输入M的值:\n");
scanf("%d",&m);
n=zhe_ban(a,m)
if(n==0)
printf("无数次\n"):
else
printf("该数是第%d个\n",n);

}
int zhe_ban(int a[15],int n)
{int a=0,b=14,t=0,mid;
mid=(a+b)/2;
while(a[mid]!=n)
{
if(n>a[mid])
mid=(mid+b)/2;
if(n<a[mid])
mid=(mid+a)/2;
if(mid=a || mid=b)
break;
}
if(a[mid]==n)
t=mid;
return(t);

}

好了:
#include<stdio.h>
void main()
{
int zhe_ban(int a[15],int n);
int a[15]={1,13,26,34,40,51,61,78,84,90,104,117,126,134,149};
int m,n;
printf("请输入M的值:\n");
scanf("%d",&m);
n=zhe_ban(a,m);
if(n==0)
printf("无数次\n");
else
printf("该数是第%d个\n",n+1);
printf("\n如果满意请记得给分\n");

}
int zhe_ban(int a[15],int n)
{int s=0,b=14,t=0,mid;
mid = ( s+b )/2;
while(a[mid]!=n)
{
if(n>a[mid])
mid=(mid+b)/2;
if(n<a[mid])
mid=(mid+s)/2;
if(mid==s || mid==b)
break;
}
if(a[mid]==n)
t=mid;
return(t);

}
温馨提示:内容为网友见解,仅供参考
无其他回答

C++提问,输入一个数列,用折半发查找其中一个数在数列的位置。这个没有...
首先我觉得你对函数的使用是不熟练的。子函数里定义的mid,high,low,在主函数里不用再次声明。mid=(low=high)\/2;这句应该是low+high吧,或许是你的笔误。if(x>0) cout<<num<<"has not been found"<<endl;else cout<<num<<"position"<<mid<<endl;还有这两句,我也不太明白要表达什么。建...

用C++语言编写折半查找算法的程序
elsehigh = mid - 1;}return -1;\/\/查找失败}void prtArr(int arr[], int len){for (int i = 0; i < len; i++)cout << arr[i] << " ";cout << endl;}int main(){unsigned int ARRLEN = 0;int val = 0;int arr[] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, ...

...顺序放在一个数组中,输入一个数,要求用折半法查找...求每一步骤的...
一直到找到或者不能再折半为止。【程序代码】#include <iostream> \/\/控制台操作头文件\/*下面的Find()函数是在递增数组中用折半查找法的递归函数,其中S是要查找的数组,B是查找范围的起始下标,E是查找范围的终止下标,A是要查找的数值,如果找到了就返回该数值在数组中是第几个(从第0个开始算),如...

C++折半查找的基本思想和步骤
步骤:1、首先确定整个查找区间的中间位置 mid=( left + right) \/2 。2、用待查关键字值与中间位置的关键字值进行比较;若相等,则查找成功,若大于,则在后(右)半个区域继续进行折半查找,若小于,则在前(左)半个区域继续进行折半查找。3、对确定的缩小区域再按折半公式,重复上述步骤。最...

C++折半查找的基本思想和步骤
算法思想:折半查找(Binary Search)的查找过程是:先确定等查记录所在范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。步骤如下:比较x和a的中间元素a[mid],若x=a[mid],则x在L中的位置就是mid;如果xa[mid],则x在a[mid]的后面。无论在哪部分查找x,其方法都和在a中查找x一...

C++折半查找法
折半查找法是算法一种,可以被任何计算机语言使用。用C语言自然也可以实现。1、定义:在计算机科学中,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,...

数据结构C++,有关设置监视哨的顺序查找和折半查找的问题?
按照题目要求改写的程序如下(见图)问题1 问题2

折半查找法
1、首先确定整个查找区间的中间位置mid=(left+right)\/2。2、用待查关键字值与中间位置的关键字值进行比较;若相等,则查找成功,若大于,则在后(右)半个区域继续进行折半查找,若小于,则在前(左)半个区域继续进行折半查找。3、对确定的缩小区域再按折半公式,重复上述步骤。最后得到结果:要么...

算法03 二分查找算法【C++实现】
二分查找,又称为折半查找,是一种在有序数组中查找特定元素的高效算法。它的核心思想在于每次查找时,将数组分割为两部分,比较中间元素与目标值,然后在与目标值接近的半个数组中继续查找。这一过程通过递减数组范围来实现,直到找到目标值或范围缩小至无法继续分割为止。使用自定义函数的方法,二分查找...

帮我看一下用折半法在一个已经排好序的数组中,从键盘上输入某数x,查找...
void main( ){ int a[10]={1,2,3,4,6,7,9,10,11,15};int low=1,high=10,mid,x;int i=0;printf("Input search number:");scanf("%d", &x );while(low<=high){ mid=(low+high)\/2;if(a[mid-1]==x){ printf("the number's position is %d\\n",mid);i=1;break;}...

相似回答
大家正在搜