c++-折半查找程序,输入后就崩溃,谁能帮忙看一下

问题描述

折半查找程序,输入后就崩溃,谁能帮忙看一下

#include
#include
using namespace std;
int half(int,vector );
int low=0;
int high=7;
int main(){
int b[10]={1,10,15,17,18,21,22,35,54,65};
vector a(b,b+10);
cout<<"请输入要査找的数:";
int number;
cin>>number;
if(half(number,a)){
cout<<"ok";
}
return 0;
}

int half(int number,vector <int> a){
    int mid=(high-low)/2;
    if(number>a[mid]){
        a[low]=a[mid+1];
        half(number,a);
    }
    else if(number<a[mid]){
        a[high]=a[mid-1];
        half(number,a);
    }
    else if (number==a[mid]){
        return 1;
    }
}

解决方案

a[high]=a[mid-1],这样做完全没有意义吧。应该是high=mid-1,对于low也是low=mid+1

解决方案二:

half函数可能没有返回值,前两个if,else应加上return语句

时间: 2024-12-27 21:46:41

c++-折半查找程序,输入后就崩溃,谁能帮忙看一下的相关文章

指针-这道题可以用折半查找的办法做吗?麻烦大神帮忙解答一下吧!!!谢谢!!!

问题描述 这道题可以用折半查找的办法做吗?麻烦大神帮忙解答一下吧!!!谢谢!!! 有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中, 插入之后依然有序.指针实现 解决方案 插入数组意味着需要将数组插入位置后面的元素全部搬动一次,相当低效. 这里最好使用链表,当然更好的是使用二叉排序树. 解决方案二: 非要这么做也可以,参考 http://blog.csdn.net/xiaofeige567/article/details/26879075 文章是用的顺序查找,按照你说的折半查

c语言-刚学C,编了个小程序出错了,请大神帮忙看一下。

问题描述 刚学C,编了个小程序出错了,请大神帮忙看一下. 知道长方形的长和宽,求面积和周长 #include main() { float x,y,a,b; printf ("请输入长和宽且用逗号分隔:); scanf ("%f,%f,&x,&y); a=x*y; b=(x+y)*2; printf ("面积=%f,周长=%fn",a,b); } 解决方案 错误一:include后面缺少头文件包含 错误二:printf中没有右半边的引号 错误三:sc

weblogic11程序部署报错,大神帮忙看下

问题描述 weblogic11程序部署报错,大神帮忙看下 安装时报错,错误如下: - 错误 激活更改期间出错, 有关详细信息, 请查看日志. - 错误 weblogic.application.ModuleException: - 错误 com.icitic.hrms.doc.ucc.impl.DocBrowseUCCImpl - 成功 已成功安装布署. 状态显示为失败. 解决方案 你这个信息量太少太少了,,,

DotNetTextBox 在修改内容后 后台有点问题 各位帮忙看下哪里有问题

问题描述 <DNTB:WebEditorID="WebEditorInfo"runat="server"Width="72%"Height="500px"LeftAreaAlign="center"LeftAreaWidth="25%"RightAreaWidth="75%"/>后台赋值WebEditorInfo.text=数据库中字段内容可以正常显示显示

IIS 5.1 WIN XP 配置后出现如下问题 请帮忙看下 在线等

问题描述 无法显示网页试图访问的网页出现问题,无法显示.--------------------------------------------------------------------------------请尝试执行下列操作:单击刷新按钮,或稍后重试.打开127.0.0.1主页,然后查找与所需信息相关的链接.HTTP错误500.100-内部服务器错误-ASP错误Internet信息服务---------------------------------------------------

c语言-运行程序,出黑框了,但是输入后没有结果

问题描述 运行程序,出黑框了,但是输入后没有结果 用递归算法求一个数的平方根的近似值,出现黑框,但输入a的值后,没有运行下面的东西,直接结束了.哪里错了啊,求助! 解决方案 首先,mysqrt()没有返回类型声明,很好奇你居然可以编译通过.其次,你在mysqrt里无限递归调用自身,没有出口,最后会overflow. 解决方案二: 把代码贴过来,方便别人给你找错. 你输入什么了? 解决方案三: http://zhidao.baidu.com/link?url=keZMPv9RTrsjcb_5EEo

单词计数-为啥c语言程序运行数据输入后回车无效

问题描述 为啥c语言程序运行数据输入后回车无效 #include int main() { int ch,i,count=0,flag=0; char bb[1000]; printf("please input some words:"); gets(bb); ch=bb[i]; for(i=0;ch!='';i++) { if(ch==' ') flag=0; else if(flag==0) { count++; flag=1; } } printf("单词个数为%d&

算法-求助 怎么让while循环中有输入的时候让程序完成后停下来 题目中没有结束标志 晕

问题描述 求助 怎么让while循环中有输入的时候让程序完成后停下来 题目中没有结束标志 晕 #include #include #include using namespace std; void output(); int check(); int a[1000]={0},n=0,flag=1,g; char b[50],c[50],d; int init(); void search(int m); int main() { while(init()) { cout <<"[&

VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因

VS 2005使用map文件查找程序崩溃原因     一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的方法来找原因,通过生成map文件,由于2005取消map文件生成行号信息(vc6.0下是可以生成行号信息的,不知道microsoft怎么想的,在2005上取消了),只能定位在那个函数发生崩溃.这里可以通过生成cod文件,即机器码这一文件,具体定位在那一行崩溃.  首先配置vc2005生成ma