python数据结构与算法精讲——数组知识(一)

注: 此内容学习须有一定编程的基础,本专题将尽可能详细去讲解数据结构与算法的知识。 该内容所有算法均可适用,作者主要使用的python语言。

图片

图片

图片内容若已理解,可跳过下方文字部分。

数据结构分为线性结构和非线性结构。 其中线性结构包括: 数组、队列、链表和栈。 非线性结构包括: 树和图。

数组知识一般被容易被忽视,以至于在后面一些较难的操作中,常常让人无从下手。 这篇文章,我将详细 介绍数组的知识(其中之一) 。

我们知道数组的存储方式是线性的,线性即一个挨着一个进行存储的。 这样的结构创建以及查询相较于非线性结构会较为简单,但是在一些其他的操作中,时间复杂度和空间复杂度就会比较高。 为什么会导致这样的情况呢?

这就需要讲到我们今天的知识点——数组的内存存储。

数组的存储是这样的: 数组有下标,当我们在一个位置中存储一个数值,其实数组中并没有真实存储这个数值,而是存储了这个下标,下标进一步指向存储地址,而在这个存储地址之中,存储着我们的数值。 (详见上方图片)

案例分析:

  1. 我们假设,要开辟一块空间,这个空间范围为4,假设这块空间的内存地址就是1000-1003。

  2. 我们建立一个数组A,A=[0,2,5,3]

  3. A[0]=0,A[1]=2,A[2]=5,A[3]=3

  4. A的下标0,即指向1000,而在电脑1000这个内存位置上存储的是0。A的下标1,即指向1001,而在电脑1001这个内存位置上存储的是2。A的下标2,即指向1002,而在电脑1002这个内存位置上存储的是5。A的下标3,即指向1003,而在电脑1003这个内存位置上存储的是3。

  5. 这个过程其实就是寻址公式的推导:

a[i]_address = base_address + i * data_type_size

我们也由此发现正是由于数据结构的小标是从0开始的,才可以使得小标的第一个值指向地址的第一个数。如果小标按照我们人类尝试从0开始,那么将增加计算机运行的复杂程度。

今天的知识点就讲到这里,如果你对此感兴趣,欢迎关注以方便获得下期内容!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值