(1)创建一个非递减序列并使用折半查找的方法查找元素。已知序列中的元素如下:10、23、45、46、51、62、63、74、85、91、100、102.要求:查找算法执行两次,一次查找元素45,查找成功,返回45对应的下标值3;另一次查找失败,在主函数中输出提示信息。可能用到的算法:1.折半查找算法。2.主函数。
2条回答 默认 最新
- 技术专家团-小桥流水 2021-11-18 15:22关注
代码如下,二分法封装成函数:
#include <stdio.h> //数组以升序排列时,二分法查找x int binSearch(int x, int a[], int n) { int low, high, mid; low = 0; high = n-1; while(low <= high) { mid = (low + high) / 2; if(x < a[mid]) high = mid - 1; else if(x > a[mid]) low = mid + 1; else return mid; } return -1; } int main() { int a[12] ={10,23,45,46,51,62,63,74,85,91,100,102}; int pos; int i=0,n; //查找两次 for(i=0;i<2;i++) { printf("请输入你要查找的数:"); scanf("%d",&n); pos = binSearch(n,a,12);//查找45 if(pos >= 0) printf("%d所在的位置:%d\n",n,pos+1); else printf("没找到%d\n",n); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 关于大棚监测的pcb板设计
- ¥15 stm32开发clion时遇到的编译问题
- ¥15 lna设计 源简并电感型共源放大器
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入