面试算法题目|数组理论基础|二分查找

本文详细介绍了数组的基础知识,包括数组在内存中的存储方式、数组操作的注意事项,特别强调了数组下标从0开始和内存连续性的概念。接着讨论了二维数组的内存分布,以C++和Java为例进行对比。然后,文章深入解析了二分查找算法,针对两种不同的区间定义(左闭右闭和左闭右开)提供了两种不同的二分查找实现,并分析了时间复杂度和空间复杂度。最后,提供了不同编程语言版本的二分查找代码示例。
摘要由CSDN通过智能技术生成

数组理论基础

数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力

也就是说,想法很简单,但实现起来 可能就不是那么回事了。

首先要知道数组在内存中的存储方式,这样才能真正理解数组相关的面试题

数组是存放在连续内存空间上的相同类型数据的集合。

数组可以方便的通过下标索引的方式获取到下标下对应的数据。

举一个字符数组的例子,如图所示:
在这里插入图片描述
需要两点注意的是

数组下标都是从0开始的。
数组内存空间的地址是连续的
正是因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。

例如删除下标为3的元素,需要对下标为3的元素后面的所有元素都要做移动操作,如图所示:
在这里插入图片描述
而且大家如果使用C++的话,要注意vector 和 array的区别,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习记录wanxiaowan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值