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博客

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 13:28:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 13:28:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 13:28:04       82 阅读
  4. Python语言-面向对象

    2023-12-09 13:28:04       91 阅读

热门阅读

  1. 数据结构准备知识

    2023-12-09 13:28:04       54 阅读
  2. ALSA Compress-Offload API

    2023-12-09 13:28:04       53 阅读
  3. K8S学习指南(1)-docker的安装

    2023-12-09 13:28:04       51 阅读
  4. ARM安全学习路标

    2023-12-09 13:28:04       52 阅读
  5. Flutter路由的几种用法

    2023-12-09 13:28:04       71 阅读
  6. Flutter 如何更新showModalBottomSheet 中的数据

    2023-12-09 13:28:04       46 阅读
  7. flutter 顺逆时针旋转图片铺满比例区域

    2023-12-09 13:28:04       64 阅读
  8. MongoDB简介与安装

    2023-12-09 13:28:04       69 阅读