数组
参考:http://www.cnblogs.com/kimmychul/p/3944171.html
《数据结构》
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合数据结构就是描述对象间逻辑关系的学科
数据存储结构:它是计算机的一个概念,简单讲,就是描述数据在计算机中存储方式的学科;常用的数据存储方式就两种:顺序存储,非顺序存储
1 数组
数组是由类型相同的数据元素构成的有序集合。
数组是最最基本的数据结构,很多语言都内置支持数组。数组是使用一块连续的内存空间保存数据,保存的数据的个数在分配内存的时候就是确定的。在数组上一般不能做插入和删除元素的操作。除了初始化和销毁之外,数组通常只做存取和修改。从逻辑结构上看,n维数组的每个元素均属于n个向量。
图 1.1 包含 n 个数据的数组
图 1.2 向数组中插入数据
数组的性质:
(1)元素的推广性:元素本身可以具有某种结构,而不限定是单个的数据元素。
(2)元素同一性:元素具有相同的数据类型。
(3)元素的确定性:元素个数和元素之间的关系一般不发生变动。
时间复杂度
访问数组中第 n 个数据的时间花费是 O(1) 但是要在数组中查找一个指定的数据则是 O(N)。当向数组中插入或者删除数据的时候,最好的情况是在数组的末尾进行操作,时间复杂度是O(1) ,但是最坏情况是插入或者删除第一个数据,时间复杂度是 O(N) 。在数组的任意位置插入或者删除数据的时候,后面的数据全部需要移动,移动的数据还是和数据个数有关所以总体的时间复杂度仍然是 O(N) 。对排好序的数组进行查找,时间复杂度为O(lgN)。
数组的存储结构和寻址
由于内存单元是一维结构,而多维数组是多维结构,因此,需要将多维结构映射到一维结构。
二维数组常用的映射方法有两种:按行优先和按列优先。
(1)按行优先:先行后列,先存储行号较小的元素,行号相同先存储列号较小的元素。
(2)按列优先:先列后行,先存储列号较小的元素,列号相同先存储行号较小的元素。
对于n(n>2)维数组,一般也采用按行优先和按列优先两种存储方法。