码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构与算法-数组

时间:2019-09-27 23:21:36      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:删除   算法   bsp   时间复杂度   img   span   数据结构   alt   出现   

数组是由相同类型的元素(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的数据而是其他的数据。

技术图片

技术图片

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

数据结构与算法-数组

标签:删除   算法   bsp   时间复杂度   img   span   数据结构   alt   出现   

原文地址:https://www.cnblogs.com/yew0/p/11600676.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!