【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;
}
相关推荐
WooaiJava4 小时前
流式TTS音频播放项目 - 面试问答(后端)
java·开发语言
新缸中之脑4 小时前
开发AI代理必备的8个Python 库
开发语言·人工智能·python
暴走十八步4 小时前
PHP+vscode开启调试debug
开发语言·vscode·php
郝学胜-神的一滴4 小时前
Python 列表 vs 数组:深入解析与最佳选择指南
开发语言·python·程序人生
杜子不疼.4 小时前
基于ATVC模板库的Ascend C Vector算子快速开发指南
c语言·开发语言·mfc
MSTcheng.4 小时前
【C++】C++11新特性(三)
开发语言·c++·c++11
learning-striving4 小时前
kali连不上网解决方法
linux·开发语言·网络·php·kali
田野追逐星光5 小时前
STL容器list的模拟实现
开发语言·c++·list
摇滚侠5 小时前
macbook shell 客户端推荐 Electerm macbook 版本下载链接
java·开发语言
程序员布吉岛5 小时前
Java 后端定时任务怎么选:@Scheduled、Quartz 还是 XXL-Job?(对比 + 避坑 + 选型)
java·开发语言