【C语言】数组练习

【C语言】数组练习

练习1:多个字符从两端移动,向中间汇聚

编写代码,演示多个字符从两端移动,向中间汇聚

练习2、二分查找

在⼀个升序的数组中查找指定的数字n,很容易想到的方法就是遍历数组,但是这种方法效率比较低。

比如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让

你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,比如:150,然

后看大了还是小了,这就是⼆分查找,也叫折半查找。(查找的前提是数据是有序的

下面是代码示例:

c 复制代码
#include <stdio.h>
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int left = 0;
	int right = sizeof(arr) / sizeof(arr[0]) - 1;
	int key = 3;
	int mid = 0;
	int find = 0;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else
		{
			find = 1;
			break;
		}
	}
	if (1 == find)
	{
		printf("恭喜您找到了,下标是%d\n", mid);
	}
	else
	{
		printf("找不到\n");
	}
	return 0;
}
相关推荐
Tyler_TXZ5 分钟前
C++C语言之——树
c语言·c++·算法·
m0_5474866612 分钟前
《面向对象与Java程序设计》全套PPT课件2026
java·开发语言
小羊先生car14 分钟前
F429-HAL-Can总线(回环及双机实验)(2026/8/15)
c语言·单片机·嵌入式硬件·软件构建
星恒随风16 分钟前
C++ 红黑树封装(二):迭代器、const_iterator 与 operator[] 完整实现 mymap 和 myset
开发语言·c++·状态模式
jason成都25 分钟前
ignav-next|Java 层封装 GNSS/INS 组合导航框架,隔离 RTKLIB 与 INS 内核,双模块独立演进、最小侵入
java·开发语言
抓不住时间的沙25 分钟前
butterfly主题美化,打造属于自己的个性博客
java·开发语言·前端·javascript·node.js·github
caimouse36 分钟前
ReactOS 图形系统分析(38):区域子系统 — region.c
c语言
嵌入式阿蔡39 分钟前
STM32时钟树详解:配错一个全乱套
c语言·stm32·单片机·嵌入式硬件
MarkHD39 分钟前
Stable Diffusion入门第19-20天:保存与分享你的工作流——第一阶段收官,从“能用”到“可复用”
java·开发语言·stable diffusion
云水初1 小时前
【agent篇】RAG 知识库构建避坑指南
开发语言·python·学习·agent·rag