数组的2个应用举例

数组不仅是一种数据存储方式,也是许多算法实现的基础。

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

在字符处理方面,可以利用数组存储字符串中的字符,并通过修改数组中不同位置的元素,实现字符逐步显示、替换或移动等效果。

c 复制代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main() {
	char arr1[] = "hello world";
	char arr2[] = "***********";
	int low = 0;
	int high = strlen(arr1) - 1;

	printf("%s\n", arr2);
	while (low <= high) {
		Sleep(1000);
		arr2[low] = arr1[low];
		arr2[high] = arr1[high];
		low++;
		high--;
		system("cls");
		printf("%s\n", arr2);
	}
	return 0;
}

2. 二分查找

在查找算法方面,数组可以用于实现顺序查找和二分查找。顺序查找适用于一般数组,但效率较低;二分查找适用于有序数组,其基本思想是每次取中间位置的元素与目标值比较,从而不断缩小查找范围。

c 复制代码
#include<stdio.h>

int BinarySearch(int n, int arr[], int size) {
	int low = 0;
	int high = size - 1;
	while (low <= high) {
		int mid = (low + high) / 2;
		if (n == arr[mid]) {
			return mid;
		}
		else if (n < arr[mid]) {
			high = mid - 1;
		}
		else {
			low = mid + 1;
		}
	}
	if (low > high) {
		return -1;
	}
}

int main() {
	int arr[] = { 10,20,25,30,35,55,40,86,99 };
	int size = sizeof(arr) / sizeof(int);
	int n = 0;
	scanf("%d", &n);
	int get = BinarySearch(n, arr, size);
	if (get == -1) {
		printf("Not Found");
	}
	else {
		printf("arr[%d]=%d", get, n);
	}
	return 0;
}


二分查找的效率明显高于顺序查找。对于长度为 n 的有序数组,顺序查找的时间复杂度是 O(n),而二分查找的时间复杂度是 O(log n)。因此,二分查找是数组应用中非常经典且重要的算法思想。

相关推荐
kite012127 分钟前
Go语言Map深度解析与最佳实践
开发语言·后端·golang
l156469482 小时前
突围!图文混合知识库难以解析,Kimi-K3 原生视觉架构深耕知识工作,DMXAPI 统一接口,缩短项目开发周期
java·大数据·开发语言
charlie1145141912 小时前
现代C++工程实践 WeakPtr 实战(三):WeakPtrFactory 与「最后成员」惯用法
开发语言·c++·开源项目·现代c++
日拱一卒——功不唐捐3 小时前
红黑树删除(C语言)
c语言·数据结构
IT小盘4 小时前
04-大模型流式输出原理-SSE与Python实现
开发语言·网络·人工智能·python
不如语冰4 小时前
AI大模型入门-Python进阶-上下文管理与with语句
开发语言·数据结构·数据库·人工智能·pytorch·redis·python
阿童木写作5 小时前
Python批量翻译亚马逊商品图实战教程
开发语言·python·xcode
会飞的大鱼人6 小时前
一文搞懂 Java HashSet:把它想成游乐园里只允许一次入场的盖章名单
java·开发语言·windows
jiay26 小时前
【.net10】顶级程序语句
java·开发语言
淼澄研学7 小时前
Python进阶实战:深入解析推导式与生成器等5大核心特性
开发语言·python