数据结构实现数组
昨天在交流的时候发现数据结构还是有必要看一下,注意:是数据结构和算法的数据结构。不是基础的数据结构
目前需要学习的数据结构有:
* 抽象数据类型 ADT,面向对象编程
* 数组和列表
* 链表,高级链表。双链表,循环双端链表
* 队列,双端队列,循环双端队列
* 栈,栈溢出
* 算法分析,时间复杂度 大O 表示法
* 哈希表,散列冲突
* 字典
* 集合
* 递归
* 查找:线性查找和二分查找
* 基本排序算法
* 高级排序算法: 归并排序、堆排序、快排
* 树,二叉树
* 图,dfs 和 bfs
* python 内置常用数据结构和算法的使用。list, dict, set, collections 模块,heapq 模块
* 面试笔试常考算法
数据和列表的区别
数组:
数组是一个容器,它可以容纳一定数量的项目,这些项目是相同的类型。 大部分数据结构都使用数组来实现它们的算法。 以下是理解数组(Array)概念的重要术语。
元素 - 存储在数组中的每个项目称为元素。索引 - 数组中元素的每个位置都有一个数字索引,用于标识元素。//原文出自【易百教程】,商业转载请联系作者获得授权,非商业请保留原文链接:https://www.yiibai.com/python/py_data_structure/python_arrays.html
列表:
列表是Python中最通用的数据类型,可以写成方括号之间的逗号分隔值(项目)列表。 使用列表的重要事项是,列表中的项目不必是相同的类型。也就是说一个列表中的项目(元素)可以是数字,字符串,数组,字典等甚至是列表类型。
数组和列表的区别为:数组只能放一个类型的数据,列表能放不同类型的数据
使用python实现数组
虽然自带的Array的模块能实现数组,但是还是跟着文章走了一手
参考链接:https://blog.csdn.net/Tonywu2018/article/details/88819424
class Array(object):
def __init__(self,capacity,fillvalue=None):
self.items=list()
for count in range(capacity):
self.items.append(fillvalue)
def editarray(self,index):
if index+1>int(len(self.items)):
#当当前索引下位标识超过数组长度自动添加数组长度
temp=Array(index+1)
for p in range(0,len(self.items)):
temp.__setitem__(p,self.items[p])
self.items=temp
del temp
return True
else:
return False
def __len__(self):
#返回数组长度
return len(self.items)
def __str__(self):
#返回str类型的数组
return str(self.items)
def __iter__(self):
#返回遍历好的数组
return iter(self.items)
def __getitem__(self, index):
#通过索引获取数组中的值
return self.items[index]
def __setitem__(self, index, newItem):
#替换指定位置的值
self.editarray(index)
self.items[index]=newItem
return self.items
def __delitem__(self, key):
#删除数组指定下标
del self.items[key]
return self.items
def __add__(self, value):
#数据末尾添加
calc=0
for k in self.items:
if len(str(k))!=0:
calc+=1
else:
break
self.__setitem__(calc,value)
if __name__ == '__main__':
a=Array(6)
for i in range(7):
a[i]=i
a.__delitem__(-1)
for x in a.__iter__():
print(x,end='')
a.__setitem__(0,9)
print(a.__str__())
a.__add__(101)
print(a.__str__())
最终结果
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:数据结构实现数组
本文作者:九世
发布时间:2020-12-29, 17:50:25
最后更新:2020-12-29, 17:58:22
原始链接:http://jiushill.github.io/posts/57421f1d.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。