美文网首页
数据结构与算法篇- 「数组」

数据结构与算法篇- 「数组」

作者: 小院里栽棵树 | 来源:发表于2022-02-09 10:52 被阅读0次

数组,一个程序员熟悉的不能再熟悉的数据结构了,可以说在我们的日常开发中,到处都有它的身影,就是这么一个我们熟悉的数据结构,我们对它真的了如指掌了吗?

  1. 什么是数组?
    数组是线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。它的最重要的特点就是连续内存空间 相同类型的数据
    常见的线性表结构还有,栈、队列、链表。
    常见的非线性表结构有,树、堆、图等。

  2. 大家常说的 「 数组适合查找,查找的时间复杂度为O(1) 」,这句话正确吗?
    并不准确,正确的说法,应该为 数据支持随机访问,根据下标随机访问的时间复杂度为O(1),但如果是根据 元素值 去查询的话,就不再是O(1)了,而是由 数组是否有序以及你所使用的排序方法来决定的了。

  3. 为什么说 数组的插入、删除操作是低效的?
    数组是需要连续内存的,插入和删除操作都需要位移操作下标之后的数据源。比如数组a的长度为n,我们需要在下标为k的位置插入一个元素,那么下标k至n的元素都需要往后迁移一位。删除也是同理。
    如果在下标n插入一个元素,时间复杂度为O(1)
    在下标1插入一个元素,时间复杂度为O(n)
    在下标为k的位置插入,时间复杂度为O(n-K+1)
    由于在每个位置插入的概率都是相同的,那么时间平均复杂度为O(1/n * n(n-1)/2) = O(n)
    删除同理。

  4. 如果是连续的删除操作,有什么可以提高效率的方法?
    我们可以先记录下已经删除的数据。每次的删除操作并不是真正地搬移数据,只是记录数据已经被删除。当数组没有更多空间存储数据时,我们再触发执行一次真正的删除操作,这样就大大减少了删除操作导致的数据搬移。

相关文章

  • 重温:数据结构与算法 - 03数组

    数据结构与算法之美 - 数组 数据结构与算法之美-学习大纲 什么数组? 数组是一种 线性表 数据结构。它用一组 连...

  • Hash算法

    数据结构与算法分析:大纲数据结构:数组算法:hash算法算法:排序算法Java实现 1 Hash算法? 将任意长度...

  • 数据结构与算法-目录

    数据结构与算法-目录 C语言篇 数据结构和算法-C语言篇1-绪论数据结构和算法-C语言篇2-初识算法数据结构与算法...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • Swift 实现 7 种常见的排序算法

    排序算法可以说是数据结构与算法当中最为基础的部分,针对的是数组这一数据结构。将数组中的无序数据元素通过算法整理为有...

  • Java数据结构与算法初级篇之数组、集合和散列表

    Java数据结构与算法初级篇之数组、集合和散列表> 数据是基础,算法是灵魂 本文出自门心叼龙的博客,属于原创类容,...

  • 数据结构与算法学习开篇

    数据结构与算法知识图谱 20个最常用的、最基础数据结构与算法 10个数据结构:数组、链表、栈、队列、散列表、二叉树...

  • 工作消失而面试却长存的算法与数据结构

    工作消失而面试却长存的算法与数据结构: 优秀的算法和数据结构被封装到了Java的集合框架之中 数据结构考点: 数组...

  • (2)数组相关算法题目

    数组是最简单的数据结构,占据连续内存并且按顺序存储。 以下是与数组有关的算法题目。 (1)查询数组中重复数字 算法...

  • 数据结构 -- C++ STL中的数据结构与算法[2]

    数据结构 -- C++ STL中的数据结构与算法[2] 接前一篇 数据结构 -- C++ STL中的数据结构与算法...

网友评论

      本文标题:数据结构与算法篇- 「数组」

      本文链接:https://www.haomeiwen.com/subject/ouqlxrtx.html