数据结构与算法-数组

Posted yew0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法-数组相关的知识,希望对你有一定的参考价值。

数组是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该元素对应的存储地址。(维基百科)

 

1. 存储结构

  数组是线性表数据结构,定义数组时,系统会分配一份连续的内存空间来存储一组相同的类型的数据,如int num[n];

技术图片

2. 多维数组

  数组定义为一维数组、二维数组、三维数组…n维数组,其格式可以写成int num[n][m];

技术图片

3. 查找、插入、删除时间复杂度

  3.1 需要查找数组第K个数时,数组会根据下标来访问,查找的时间复杂度为O(1)

技术图片

  3.2 需要在数组的第K个数插入一个数Y,在有序数组的情况下,插入的时间复杂度为O(n)

void ArrayAdd(int* pNum, int nCount, int nAddIndex, int nAddNum) {
    int nEnd = nAddIndex-1;
    for(int nIndex=nCount-1; nIndex>=nEnd; nIndex—) {
        pNum[nIndex+1] = pNum[nIndex];
    }
    pNum[nEnd] = nAddNum;
}

 

技术图片

  3.3 需要删除数组的第K个数,时间复杂度为O(n)

void ArrayDelete(int* pNum, int nCount, int nDeleteIndex) {
    int nStart = nDeleteIndex - 1;
    int nEnd = nCount - 1;
    for(int nIndex=nStart; nIndex<nEnd; nIndex++) {
        pNum[nIndex] = pNum[nIndex+1];
    }
}

 

技术图片

4. 数组越界问题

  假如数组定义是int num[n],可以对0到(n-1)的数据进行操作,但是如果对n往后的数据进行操作的话就会出现数组越界,操作的不是num的数据而是其他的数据。

技术图片

技术图片

可关注公众号了解更多的面试技巧

以上是关于数据结构与算法-数组的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法01数组

《图解数据结构与算法》(Java代码实现注释解析算法分析)

数据结构与算法—数组栈和链表栈

数据结构与算法—数组栈和链表栈

数据结构与算法图遍历算法 ( 深度优先搜索代码示例 )

数据结构与算法:数组