经典数据结构之数组

        数组我们肯定不陌生,在初学一门编程语言的时候肯定会先学习数组,主流的编程语言都支持数组。它是一种最基本的线性表数据结构,是一组连续的内存空间,存储了具有相同数据类型的数据

  线性表:顾名思义,就是数据排成像一条线一样的结构。线性表上的数据只有前后两个方向。除了数组,链表、队列、栈等也是一种线性表结构

  连续内存空间和相同类型的数据:相同数据类型不必多说。连续内存空间,我觉得这才是数组最大的特性。正是因为这个特性,它才可以支持随机访问,注意是随机访问不是查找哦,随机访问的话我们事先肯定是知道它的下标index的,通过index可以直接定位到某个元素的内存空间地址。它的原理就是:数组下标就是相对于数组起始地址的偏移量,我们只要知道数组对象在内存中的地址,就能通过偏移量计算任一元素的内存地址,即:baseAddress+index*elementSize,baseAddress为数组对象的地址,elementSize为每一个元素的大小,见下图。所以随机访问的时间复杂度为O(1),如果是查找某个元素的话时间复杂度就是O(n),因为你事先并不知道这个元素所在的位置,只能遍历一遍逐个比较判断。而且因为它是连续的内存空间,cpu在读取数组的时候可以将整块数组加载到寄存器,性能非常高。

详细内容请参考文章:https://blog.csdn.net/ddsssdfsdsdshenji/article/details/108265846

你可能感兴趣的:(经典数据结构之数组)