社区
C语言
帖子详情
C语言如何用二分法查找一个数.我要一个例题
yinpengcheng
2010-10-13 07:24:55
C语言如何用二分法查找一个数.我要一个例题
...全文
1090
4
打赏
收藏
C语言如何用二分法查找一个数.我要一个例题
C语言如何用二分法查找一个数.我要一个例题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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语言
公共基础知识(附
例题
).doc
全国计算机等级考试二级
C语言
公共基础知识(附
例题
).doc
C程序设计ch流程图NS图.pptx
C程序设计ch流程图NS图.pptx
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章