数组和字符串-笔记

一、集合,列表与数组

集合:由一个或多个确定的元素构成的一个整体;
集合特点:1.集合内的数据是无序的;2.集合内的数据类型不一定相同;
列表:又称为线性列表,由数据项构成的有限序列,按照一定的线性顺序,排列而成的数据项集合;
列表特点:1.列表中的数据类型可能不一致;2.列表是按照一定的线性顺序排列的;3长度是可变的;3.列表中的元素在内存中可能是相邻的,也有可能是不相邻的,如列表的另一种实现方式---链表,它的元素在内存中则不一定是连续的;
列表在编程语言中的常见表现形式有数组和链表,栈和队列是两种特殊的链表。
数组:数组是列表的一种特殊实现形式,数据存储是有序的,是通过索引来对数组进行访问(列表中没有索引),下表从0开始;
数组特点:1.存储方式是有序的;2.用索引来标示数组中的内容,索引是从下表0开始;3.数组中的元素在内存中是连续的;4,每个数组中的元素占用内存相同;

二、数组的操作

1、读取元素
(1)方式:访问索引(下标)来读取,索引一般从0开始。
(2)过程:先在内存中为数组申请一段连续的空间,并且会记下索引为0处的内存地址,之后由记下的索引为0处内存地址 + 索引值 = 目标元素的地址,即找到目标元素。
(3)时间复杂度:O(1)

2、查找元素
(1)过程:从数组开头逐步向后查找。如果数组中的某个元素为目标元素,则停止查找;否则继续搜索直到到达数组的末尾。
(2)时间复杂度:O(N),N 为数组的长度。

3、插入元素
(1)末尾插入
(2)首尾间插入用链表省时

4、删除元素
(1)删除掉数组中的某个元素后,数组中会留下空缺的位置,而数组中的元素在内存中是连续的,这就使得后面的元素需对该位置进行填补操作。
(2)时间复杂度:O(N),N 为数组的长度。

注:只考虑最坏情况的时间复杂度

原文地址:https://www.cnblogs.com/jiangwg/p/15386374.html