数据结构与算法-数组
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的数据而是其他的数据。
可关注公众号了解更多的面试技巧
以上是关于数据结构与算法-数组的主要内容,如果未能解决你的问题,请参考以下文章