社区
C语言
帖子详情
C语言如何用二分法查找一个数.我要一个例题
yinpengcheng
2010-10-13 07:24:55
C语言如何用二分法查找一个数.我要一个例题
...全文
1070
4
打赏
收藏
C语言如何用二分法查找一个数.我要一个例题
C语言如何用二分法查找一个数.我要一个例题
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oliver_wei
2010-10-13
打赏
举报
回复
binary_search
tangxianghenggood
2010-10-13
打赏
举报
回复
好像没人回帖,楼主结贴率不高啊
/*
折半查找;
使用范围: 查找中的元素为有序的
过程: 不断减少查找的次数,去真个元素的中间值与要查找的元素相比较,如果查找元素大于中间元素,那那
要查找的元素在真个数据的左半边,否则在右半边 ,通过控制下标就可以实现了
*/
#include<iostream>
using namespace std;
//计数输入的数据元素
void Input(int a[],int n); //.数据输入
void Output(int a[],int n);
void Search(int c[],int n); //折半查找
void Sort(int c[],int n);
int main()
{
int num[100];
int ncount;
while (1)
{
cout<<"输入数据元素个数:";
cin>>ncount;
Input(num,ncount); //输入数据元素
Sort(num,ncount); // 给元素排序
Output(num,ncount); //输出排好序的元素
Search(num,ncount); //查找
}
system("pause");
return 0;
}
//////////////////////
void Input(int a[],int n) //.数据输入
{
int i;
cout<<"输入整数:"<<endl;
for (i=0; i<n; i++)
{
cin>>a[i];
}
}
////////////////////////////////
void Output(int a[],int n) //数据输出
{
cout<<"输入的数据排好序后如下:"<<endl;
for (int i=0; i<n; i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
////////////////////////////////
void Sort(int c[],int n)
{
int i,j,temp;
//对元素进行排序 冒泡
for (i=0; i<n; i++)
{
for (j=0; j<n-i-1; j++)
{
if (c[j]>c[j+1])
{
temp = c[j];
c[j] = c[j+1];
c[j+1] = temp;
}
}
}
}
///////////////////////////////
void Search(int c[],int n) //折半查找
{
int i,j;
int num; //要查找的数
//折半查找
int low = 0; //最低下标
int hig =n-1; //最高下标
int midd; //最中间元素
cout<<"输入要查找的数:";
cin>>num;
cout<<endl;
for (i=0; i<=n/2; i++) //折半查找次数
{
midd = c[(low+hig)/2]; //取中间元素
if (num>midd) //要查找的数大于中间的数
{
low = (low+hig)/2+1; //那要找的数就在中间以后的数中
}
else if (num == midd)
{
break;
}
else //要查找的数小于中间的数
{
hig = (low+hig)/2-1; //要找的数在开始到中间的数字中
}
}
if (num != midd)
{
cout<<"数据中不存在你要找的数据!"<<endl;
}
else
{ // 输出要查找元素是所以元素中的第几个
cout<<num<<"是数据的第"<<(low+hig)/2+1<<"个元素!"<<endl;
}
}
推荐资料 比较有用,望有帮助
这些程序是我自己一个一个写的,现拿出来让和我一样的初学者分享一下,用的是dev C++ 编译,
里面包括详细的分析过程和代码注释,有两个文件,一个是c++/c 基础的,另一个是基础提高篇,
我相信对初学者是有很大的帮助的! 同时里面有运行的图片,下载的同学可以先看题目,然后在自己去做,
在和我比较一下思路,我写的不是很好的地方还望赐教
下载地址:http://tangxianghenggood.download.csdn.net/
下面的是强化训练
这个系统是用DEV c++ 写的,上面注释也很详细,对于练技术还是很有用的,以前看很多人说做dos没界面,
不好用,这个可以让你深刻的学习一下的!直接用dev c++ 打开 可以直接编译运行
http://d.download.csdn.net/down/2746868/tangxianghenggood
可以训练的好帮手, 个人极力推荐 送给有心人
somebody
2010-10-13
打赏
举报
回复
[Quote=引用 1 楼 ayw215 的回复:]
int BSearch(elemtype a[],elemtype x,int low,int high)/*在下届为low,上界为high的数组a中折半查找数据元素x*/
{
int mid;
if(low>high) return -1;
mid=(low+high)/2;
if(x==a[mid]) return mid;
if(x<a[mid]) retur……
[/Quote]
答案已出,可以结贴
ayw215
2010-10-13
打赏
举报
回复
int BSearch(elemtype a[],elemtype x,int low,int high)/*在下届为low,上界为high的数组a中折半查找数据元素x*/
{
int mid;
if(low>high) return -1;
mid=(low+high)/2;
if(x==a[mid]) return mid;
if(x<a[mid]) return(BSearch(a,x,low,mid-1));
else return(BSearch(a,x,mid+1,high));
}
全国计算机等级考试二级
C语言
公共基础知识(附
例题
)
全国计算机等级考试二级
C语言
公共基础知识(附
例题
)
全国计算机等级考试二级
C语言
公共基础知识附
例题
.pdf
全国计算机等级考试二级
C语言
公共基础知识附
例题
.pdf
C语言
入门——循环结构练习(内附答案)
大一的
C语言
实验题,两道关于循环的题,适合刚刚入门
C语言
的同学来巩固和学习循环结构while、for如何来写,是很好的练手题
C程序设计ch流程图NS图.pptx
C程序设计ch流程图NS图.pptx
C语言
经典100题——用二分法在
一个
有序
数
组中查找某个
数
字
<1>题目描述 有15个
数
按由大到小顺序放在
一个
数
组中,输入
一个
数
,要求用折半查找法找出该
数
是
数
组中第几个元素的值。如果该
数
不在
数
组中,则输出“无此
数
” <2>思路分析 记录
数
组中左边第
一个
元素的下标为left,记录
数
组右边第
一个
元素的下标为right,记录中间元素的下标为mid(mid = left+right) 当输入的
数
在a[mid]的左边时,将right改成mid-1,同时mid = (left+right)/2;当输入的
数
在a[mid]的右边时,将left改成mid
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章