折半查找程序代码(c程序折半查找法)
admin 发布:2022-12-19 22:57 132
本篇文章给大家谈谈折半查找程序代码,以及c程序折半查找法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
用C++语言编写折半查找算法的程序
#includeiostream
#includecstdlib
using namespace std;
int binary_search(int arr[], int len, int val){
int low = 0, high = len - 1, mid = 0;
while (low = high){
mid = (low + high) / 2;
if (val == arr[mid])
return mid;
if (val arr[mid])
low = mid + 1;
else
high = 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, 6, 5, 4, 3, 2, 1 };
ARRLEN = sizeof(arr) / sizeof(unsigned int);
prtArr(arr, ARRLEN);
cout "输入要查找的数:"; cin val;
int ret = binary_search(arr, ARRLEN, val);
if (ret == -1)
cout "未找到该数" endl;
else
cout "该数为数组的第" ret "个元素" endl;
system("pause");
return 0;
}
执行结果:
折半查找 用c编写一个折半查找的程序
C语言代码
int BinSearch(SeqList * R, int n , KeyType K )
{ //在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1
int low=0,high=n-1,mid; //置当前查找区间上、下界的初值
if(R[low].key==K)
{
return low ;
}
if(R[high].key==k) return high;
while(low=high)
{ //当前查找区间R[low..high]非空
mid=low+((high-low)/2);//使用 (low + high) / 2 会有整数溢出的问题(问题会出现在当low + high的结果大于表达式结果类型所能表示的最大值时,这样,产生溢出后再/2是不会产生正确结果的,而low+((high-low)/2)不存在这个问题
if(R[mid].key==K)
{
return mid; //查找成功返回
}
if(R[mid].keyK)
high=mid-1; //继续在R[low..mid-1]中查找
else
low=mid+1; //继续在R[mid+1..high]中查找
}
if(lowhigh)
return -1; //当lowhigh时表示查找区间为空,查找失败
} //BinSeareh
c语言编程实现“折半查找”的过程。
折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。参考程序,希望对你有所帮助!
#includestdio.h
void main()
{
int a[20],x,i,start,end;
printf("input 20 numbers:\n");
for(i=0;i20;i++) scanf("%d",a[i]);
printf("please enter the number:\n");
scanf("%d",x);
for(start=0,end=19;start=end;)
{
i=start+(end-start)/2;
if (x==a[i])
{
printf("%d",i+1);
getch();
return;
}
else if (xa[i]) end = i-1;
else start=i+1;
}
}
C语言程序编写——折半查找法
#includestdio.h
int main()
{int a[16]={15,14,13,12,11,10,9,8,7,6,5,4,3,1,0};
int l=0,r=15,mid,x;
scanf("%d",x);
do
{mid=(l+r)/2;
if(a[mid]==x)break;
if(xa[mid])r=mid-1;
else l=mid+1;
}while(l=r);
if(a[mid]==x)
printf("a[%d]=%d\n",mid,x);
else
printf("无此数\n");
return 0;
}
关于折半查找程序代码和c程序折半查找法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 04-28网页页尾代码(网页制作尾部)[20240428更新]
- 04-28网站背景音乐自动播放代码(html背景音乐自动播放代码)[20240428更新]
- 04-28推箱子html代码(推箱子小游戏的代码)[20240428更新]
- 04-28手机版在线留言asp代码(asp手机网站源码)[20240428更新]
- 04-28淘宝js轮播代码(淘宝轮播图代码)[20240428更新]
- 04-28关于html10秒倒计时代码的信息[20240428更新]
- 04-28网页模板代码,网页模板代码怎么运行
- 04-28日历安卓代码(安卓版日历)[20240428更新]
- 04-28将代码转化为文字(文字转换代码生成工具)[20240428更新]
- 04-28代码设计实例(代码编程实例)[20240428更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接