二维数组的空间复杂度_数据结构之数组

数组是最基础的数据结构,你可能觉得它非常简单。其实真的非常简单,但里面有一些细节还是稍微要注意一下的。先看一下数组的定义:数组是一种线性的数据结构,用连续的内存存放相同类型的数据。线性结构表示数据只有前后两个方向,像队列、栈、链表都是线性结构。与之对立是的非线性结构,其表示不止前后两个方向,像树、堆、图都是非线性结构。连续的内存这个很好理解,表示程序会在内存中开辟一段连续的空间用于存放数...
摘要由CSDN通过智能技术生成

数组是最基础的数据结构,你可能觉得它非常简单。其实真的非常简单,但里面有一些细节还是稍微要注意一下的。

先看一下数组的定义:数组是一种线性的数据结构,用连续的内存存放相同类型的数据。线性结构表示数据只有前后两个方向,像队列、栈、链表都是线性结构。与之对立是的非线性结构,其表示不止前后两个方向,像树、堆、图都是非线性结构。连续的内存这个很好理解,表示程序会在内存中开辟一段连续的空间用于存放数据,这样才能实现随机访问,且时间复杂度为O(1)。

先说下随机访问,这是数组的最大优势了。随机访问可以实现只需要一步就能读取到要查询的值。我们知道数组变量,在访问里面的元素时,只要知道基址地址和数据类型大小就可以。比如定义数组int[] a = new int[10],a[0]的地址为1000,数据类型大小为4字节(int),现在要访问第三个元素,计算公式为1000*2*4,即1008这个地址就是a[2]的数据。CPU有了这个地址后,就可以直接跳到这个内存地址读取数据,其时间复杂度为O(1)。

上面说的随机读取,即事先要知道要访问元素的下标索引才能实现O(1),如果你要在数组中查找一个元素,其时间复杂度为O(n)。因为查询数据,还是得从头到尾挨个遍历,假如查找的元素正好是第一个,则时间复杂度为O(1),但我们计算时间复杂度一般是最坏情况下的复杂度,比如查找的数据正好在最后一个,则时间复杂度为O(n)。如果数组是有序的,可以使用二分查找,时间复杂度为O(logn)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值