Day5 在数组的指定位置插入元素

本文探讨如何在不调用API的情况下,在Python数组的指定位置插入元素。介绍了数组和向量的概念,并详细解释了插入操作的流程,包括处理不同索引情况(正数、负数索引)以及数组扩容策略。还提到了当插入位置为None值时的处理方法。
摘要由CSDN通过智能技术生成

不调用API在数组的指定位置插入元素

首先明白两个概念

  • 向量
  • 数组

数组

数组中的元素 A [ i ] A[i] A[i] 的物理地址可以通过公式$ A + i*s $ 推导出来,显然这是线性的存储结构,因此被称作:线性数组。
在这里插入图片描述

向量

邓工总结:向量是数组的进一步抽象,里面的元素类型不再只是基本的数据类型,可以是定制的数据类型。
个人理解,向量就是一些更复杂的基本单位组成的数组

在明白这两个基本概念之后,再来理解题目中的插入操作

插入操作

在位置为r的地方,插入元素e,用一句话概括为

e在秩为r的地方插入,原后继元素依次后移。

这里关键的地方在于要把数组和其实际的储存结构对应起来,即:元素的位置和物理上的储存位置是一一对应的,一个元素对应着一个物理储存单元,要在前面插入一个元素,那么在这个位置上就要有空位,所以后续的元素要后移腾出一个空位。

编程思路

流程
  • 找到要插入索引所在位置
  • 将原来索引上以及索引以后的元素都往后挪一个位置,使得索引位置为空
  • 将值放在索引处
要考虑的问题
  • 索引分析
    因为python是支持负数索引的,所以要考虑到多种情况
    1.正数索引值大于数组长度放置于末尾

2.负数索引值大于数组长度放置于开头

3.负数索引值小于数组长度,则用index+len(list)处理

  • None值的考虑

若插入位置刚好是None值,则直接替换

  • 数组的扩容

如果原本数组已满, 再插入一个元素时,必须重新开辟更大的内存空间。常见的扩容策略:size加倍。下面的代码,扩容策略亦是如此。也可以采用加一

class MyArray(object):
    def __init__(self, list1):
        self.size = len(list1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值