标签:ase sort 数据结构 search code tco 标识 存储 ack
1、集合:由一个或多个确定的元素所构成的整体。集合里的元素类型不一定相同,集合里的元素没有顺序。
2、数组:数组会用一些名为 索引
的数字来标识每项数据在数组中的位置。数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存。对于数组,计算机会在内存中申请一段 连续 的空间,并且会记下索引为 0
处的内存地址。
3、数组的操作:(1)读取元素:通过数组的索引访问数组中的元素。索引其实就是内存地址,值得一提的是,计算机可以跳跃到任意的内存地址上,这就意味着只要计算出数组中元素的内存地址,则可以一步访问到数组中的元素。时间复杂度为 O(1)
(2)查找元素: 计算机只会保存数组中索引为 0
处元素的内存地址,因此当计算机想要知道数组中是否包含某个元素时,只能从索引 0
处开始,逐步向后查询。时间复杂度为 O(N),N 为数组的长度。
(3)插入元素:如果要将该元素插入到数组的末尾,只需要一步。即计算机通过数组的长度和位置计算出即将插入元素的内存地址,然后将该元素插入到指定位置即可。如果要将该元素插入到数组中的其他位置,则会有所区别,这时我们首先需要为该元素所要插入的位置腾出
空间,然后进行插入操作。
(4)删除元素:删除元素与插入元素的操作类似,当我们删除掉数组中的某个元素后,数组中会留下 空缺
的位置,而数组中的元素在内存中是连续的,这就使得后面的元素需对该位置进行 填补
操作。
数组练习题:(1)寻找数组的中心索引
def pivotIndex(nums): for i in range(len(nums)): if sum(nums[0:i])==sum(nums[i+1:]): return i else: return -1 nums=[1, 7, 3, 6, 5, 6] print(pivotIndex(nums)) nums=[1, 2, 3] print(pivotIndex(nums))
(2)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置
def searchInsert(nums,target): for i in nums: if i==target: return nums.index(i) else: nums.append(target) return sorted(nums).index(target) nums=[1,3,5,6] target = 5 print(searchInsert(nums,target)) target =2 print(searchInsert(nums,target))
标签:ase sort 数据结构 search code tco 标识 存储 ack
原文地址:https://www.cnblogs.com/yijierui/p/13162553.html