数据结构-数组

数组作为一种基础数据结构,其随机访问特性源于连续内存空间。然而,这也导致了插入和删除操作的低效。文章探讨了数组下标从0开始的原因,以及在特定情况下如何优化插入和删除操作。虽然容器如ArrayList提供了更多便利,但在某些场景下,数组仍然是首选,尤其是在性能要求高的底层开发中。
摘要由CSDN通过智能技术生成

在每一种编程语言中,基本都会有数组这种数据类型。不过它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。尽管它看起来十分简单,但是我们很多人都没有了解它的精髓。

首先,我们来想一个问题,为什么很多编程语言数组的下标都是从0开始的?从1开始不是更符合人类的思维模式吗?

接下来我们带着这个问题来学习接下来的内容?

如何实现随机访问?

我们都知道数组是一种线性表的数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。

这里有两个重点:连续的内存空间和相同类型的数据。(线性表 线性结构 与之对立的还有非线性表 线性结构,想一条线那样,只有前和后两个方向 像数组、队列、栈、链表等都是线性结构)

那么数组是如何实现随机访问的?

正是因为它是一种线性的结构和连续的内存空间,他才可以有这个特性。但是这个特性也有弊端,这两个限制让它的删除和插入操作变得十分低效。比如在数组中删除插入了一个数据,为了保证它的连续性,那么就需要将大量的数据进行搬移。

我们要删除3,则需要将4和5进行移动,使他连续。

我们先来解决第一个问题,数组是如何实现根据下标随机访问的?

我们拿一个长度为10的int型数组int[] a = new int[10]来举例。计算机给数组分配了一块连续的内存空间1000~1039,其中内存的首地址为index = 1000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值