数据结构基础-数组 2
Posted IT界的测试混子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构基础-数组 2相关的知识,希望对你有一定的参考价值。
《漫画算法 python篇》程序员小灰
数组
数组:array,有限个相同类型的变量所组成的有序集合。
特点:顺序存储
灰色格子:空闲
橙色格子:占用
连续红色格子,代表数组在内存中的位置
数组的基本操作
- 读取数组
- 更新元素
- 插入元素
数组插入/删除算法:
Python
class MyArray:
def __init__(self,capacity):
self.array = [None] * capacity #数组容量
self.size = 0
def insert(self,index,element):
if index < 0 or index > self.size:
raise Exception("超出数组实际范围")
# 从index的位置,逐个元素往右挪
for i in range(self.size-1,index-1,-1):
self.array[i+1] = self.array[i]
self.array[index] = element
self.size += 1
def insert2(self,index,element):
if index < 0 or index > self.size:
raise Exception("超出数组实际范围")
# 如果实际元素超出数据容量,则扩容
if self.size >= len(self.array):
self.resize()
# 从index的位置,逐个元素往右挪
for i in range(self.size-1,index-1,-1):
self.array[i+1] = self.array[i]
self.array[index] = element
self.size += 1
def resize(self):
'''数组扩容'''
array_new = [None] * len(self.array) * 2
# 复制旧数据到新的数组
for i in range(self.size):
array_new[i] = self.array[i]
self.array = array_new
def output(self):
for i in range(self.size):
print(self.array[i])
def remove(self,index):
if index < 0 or index > self.size:
raise Exception("超出数组实际范围")
for i in range(index, self.size):
self.array[i] = self.array[i+1]
self.size -= 1
if __name__ == '__main__':
# 插入
print("############插入############")
array = MyArray(3)
array.insert2(0,1)
array.insert2(0,2)
array.insert2(0,3)
array.insert2(2,4)
array.insert2(3,5)
array.output()
# 删除
print("############删除############")
array.remove(2)
array.output()
运行结果:
############插入############
3
2
4
5
1
############删除############
3
2
5
1
以上是关于数据结构基础-数组 2的主要内容,如果未能解决你的问题,请参考以下文章
Inspector 中的 Unity3d 排序的 2D 数组