【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;
}
相关推荐
嵌入式学习菌12 分钟前
Modbus 透传和 Modbus 转发区别
c语言
峥嵘life20 分钟前
Android16 开机后立即打开相机闪退问题分析与解决总结
android·开发语言·数码相机·策略模式
jeo陽22 分钟前
05-数组与冒泡排序:第一个数据结构与经典算法
c语言·数据结构·算法
niucloud-admin26 分钟前
NIUCLOUD LITE AI开发文档--命名规范
开发语言·php
WL学习笔记27 分钟前
模板初阶(C++)
开发语言·c++·后端·模板初阶
水饺编程28 分钟前
第2章:Linux 基础,mkdir 命令的简单入门
linux·c语言·汇编
SunnyDays101129 分钟前
使用 Java 高效管理 Excel 批注:添加、读取、修改和删除
java·开发语言·excel
ydjs678899-bot1 小时前
为什么大型monorepos变慢了Rush.js + Sparo对此做了什么
开发语言·javascript·ecmascript
坊钰1 小时前
【LangGraph框架入门级】12. 人机交互:interrupt 中断与 Command 恢复
开发语言·数据库·python·人机交互·ai编程·langgraph
燕落南枝1 小时前
C 语言学习大总结:从入门到进阶的完整知识体系
服务器·c语言·学习