码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据结构与算法之美-读书笔记3


    在面试的时候问到数组和链表的区别,很多人都回答说,“链表适合插入、删除,时间复杂度O(1);数组适合查找,查找时间复杂度为O(1)”。

    实际上,这种表述是不准确的。数组是适合查找操作,但是查找的时间复杂度并不为O(1)。即便是排好序的数组,你用二分查找,时间复杂度也是O(logn)。所以,正确的表述应该是,数组支持随机访问,根据下标随机访问的时间复杂度为O(1)。

    数组支持随机访问,根据下标随机访问的时间复杂度为O(1)。 

    容器能否完全替代数组?

    针对数组类型,很多语言都提供了容器类,比如Java中的ArrayList、C++ STL中的vector。在项目开发中,什么时候适合用数组,什么时候适合用容器呢?

    对于业务开发,直接使用容器就足够了,省时省力。毕竟损耗一丢丢性能,完全不会影响到系统整体的性能。但如果你是做一些非常底层的开发,比如开发网络框架,性能的优化需要做到极致,这个时候数组就会优于容器,成为首选。

    对于多维数组,直接采用数组,定义起来会方便很多。

    比如Object[][] array;而用容器的话则需要这样定义:ArrayList array。

    为什么数组的插入和删除操作很低效呢?
    插入:
            如果有一元素想往int[n]的第k个位置插入数据,需要在k-n的位置往后移。
            最好情况时间复杂度 O(1)         最坏情况复杂度为O(n)        平均负责度为O(n)
    优化:如果数组中的数据不是有序的,也就是无规律的情况下,可以直接把第k个位置上的数据移到最后,然后将插入的数据直接放在第k个位置上。可以把时间复杂度变成O(1)。
    删除:
    与插入类似,为了保持内存的连续性。
    最好情况时间复杂度 O(1)        最坏情况复杂度为O(n)        平均负责度为O(n)


    还学到了一个数组访问越界问题
    C语言中的数据越界是一种未决行为,一般比较难发现的逻辑错误。相比之下,Java会有越界检查。

     

  • 相关阅读:
    Apache Doris (四十六): Doris数据更新与删除 - 批量删除
    Threejs 3D模型入门项目
    5G NR Polar码简介(一)
    Ray tracing 光线追踪 之 embree ,从入门到精通 01 安装与体验
    发现Kafka bug
    工时管理:警惕员工时间偷窃!企业应该如何避免?
    RK3399平台开发系列讲解(时间篇)RTC设备构建过程
    Linux服务器自定义登陆提示信息
    【大数据Hive】hive 优化策略之job任务优化
    推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
  • 原文地址:https://blog.csdn.net/m0_62742402/article/details/126552332
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号