当前位置: 首页 > news >正文

C语言入门课程之课后习题之折半查找法

目录

1解题思路:

2代码所示:

3运行代码:

4习题不难,多刷题,练思路,最重要的不是学会了一道题,而是掌握其编程思想;


1解题思路:

折半查找法(half-interval search)

优点:比较次数少,查找速度快,平均性能好

缺点:是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。

注意:折半查找法仅适用于对已有顺序的数组、数据进行操作!!!

例如:要在数组arr[]={8,7,9,6,4,1,2,5,3,10,11};中查找key=7的位置;首先,我们要先将数组arr中的数据成员进行排序。arr[]={1,2,3,4,5,6,7,8,9,10,11};

如图所示:将该组数据小端记作low,大端记作high,中间值记作mid;
二分法查找时,将所查找的key与mid比较,例如key=7,即可缩小查找范围在mid和high之间; 

如图所示即可找到key=low=7;


2代码所示:

#include<stdio.h>
#define n 15
int main()
{int arr[n]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},x,i=1,between,left,right,a; printf("输出要查找的数\n");scanf("%d",&x);left=0;right=14;while(left<right)//思想:利用数组的角标,不止可以利用数组元素 {a=(left+right)/2;if(arr[a]==x){printf("该数是该数组的第%d个元素",a+1);break;}else if(x<arr[a]){right=a;}else left=a;if(arr[left]==arr[right]){printf("无此数");break; }}return 0;
}

首先:对数组进行定义并输入要查找的数值;

	int arr[n]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},x,i=1,between,left,right,a; printf("输出要查找的数\n");scanf("%d",&x);

然后利用循环和数组的角标进行循环二分查找;

	left=0;right=14;while(left<right)//思想:利用数组的角标,不止可以利用数组元素 {a=(left+right)/2;if(arr[a]==x){printf("该数是该数组的第%d个元素",a+1);break;}else if(x<arr[a]){right=a;}else left=a;if(arr[left]==arr[right]){printf("无此数");break; }}

最后运行即可。

3运行代码:

4习题不难,多刷题,练思路,最重要的不是学会了一道题,而是掌握其编程思想;

但是首先要多刷题

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译、处理低级存储器。

感谢各位的阅读,以上就是“C语言怎么”的内容了,经过本文的学习后,相信大家对C语言这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是CSDN杰克尼,小编将为大家推送更多相关知识点的文章,欢迎关注!

制作不易,望点个关注,后续我会持续更新c题库,关注我不迷路,有不会的私聊我

请不要相信胜利就像山坡上的蒲公英一样,唾手可得,但是请相信世上总有一些美好,值得我们全力以赴。

若没有习题的,可以看看我的主页,比如说C语言不可不敲系列:跳水比赛排名问题-CSDN博客

这道题就是一个很好的思路;

http://www.lryc.cn/news/255540.html

相关文章:

  • 【CSP】202209-1_如此编码Python实现
  • std::function
  • SQL Server——权限管理
  • 实例解析关于兔鲜登录tab栏切换案例详细讲解!
  • 制作一个RISC-V的操作系统三-编译与链接
  • tmux工具--程序部署在服务器上持久化执行
  • C语言精选——选择题Day39
  • React 笔记 jsx
  • QMenu风格设计qss+阴影
  • temu防窒息警示语贴哪里
  • Maven——坐标和依赖
  • Python中事务的常见用法
  • 蛮力法最大值连续子序问题
  • 多功能智能遥测终端机 5G/4G+北斗多信道 视频采集传输
  • 1.查看表的基本结构,表的详细结构和修改表名
  • Mybatis实用教程之XML实现动态sql
  • 混合App开发实现页面跳转(更新中)
  • 【FPGA】Verilog:BCD 加法器的实现
  • 机器学习第15天:GBDT模型
  • STM32F407-14.3.9-01输出比较模式
  • LeetCode题:174. 地下城游戏
  • CSS、JS文件无法正确加载至页面问题与解决
  • ftp的服务安装配置
  • 原码,补码,反码(极简版)
  • uniapp监听wifi连接状态
  • 2023年总结和2024年展望(以ue为主攻)
  • 南京大学计算机学院面试准备
  • API成批分配漏洞介绍与解决方案
  • 跨网文件摆渡系统:安全、可控的数字传输桥梁
  • 线程池的原理和基本使用~