社区
C语言
帖子详情
C语言如何用二分法查找一个数.我要一个例题
yinpengcheng
2010-10-13 07:24:55
C语言如何用二分法查找一个数.我要一个例题
...全文
1075
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语言
公共基础知识(附
例题
)
*
数
据的逻辑结构:对
数
据元素之间的逻辑关系的描述,可以用
一个
数
据元素的集合和定义在此集合中的若干关系来表示。 *
数
据的存储结构:
数
据在计算机存储空间中的存放形式,可以是顺序、链接、索引等存储结构。 4. ...
全国计算机等级考试二级
C语言
公共基础知识附
例题
.pdf
二分法查找
的基本思想是将
数
组分成两个部分,然后在其中
一个
部分中继续查找。
二分法查找
的时间复杂度为O(logn)。 冒泡排序 冒泡排序是一种简单的排序算法,它可以将
数
组中的元素排序。冒泡排序的基本思想是将
数
组...
C语言
入门——循环结构练习(内附答案)
首先,我们来看第
一个
练习题目,它的目标是找到2到2000之间的所有完全
数
。完全
数
是指所有不同正因
数
之和等于其本身的正整
数
。这个题目涉及到了`while`循环和嵌套`for`循环的应用。 在第
一个
实现中,使用了外层`...
全国计算机等级考试二级
C语言
公共基础知识(附
例题
).doc
二分法查找
是一种高效的查找算法,适用于有序
数
据集合。冒泡排序是简单的排序算法,通过交换相邻元素的方式进行排序。 以上概念和知识点是全国计算机等级考试二级
C语言
公共基础知识考试的重点内容。考生需要通过...
C程序设计ch流程图NS图.pptx
二分法是一种迭代查找技术,通过不断地缩小搜索区间来逼近根的位置,N-S盒图能够将这一迭代过程展现得非常直观。 5. 利用牛顿迭代法求解函
数
f(x)=0在区间[-10,10]内的根。牛顿迭代法是一种寻找函
数
零点的迭代方法,...
C语言
70,024
社区成员
243,253
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章