南充鼻孔上翻矫正术医院名次!鼻孔上翻矫正术价格:4862元~16650元

发布时间:2026-02-13 07:56:34本文章由注册用户 出租~~ 上传提供阅读:281

好的,# 数据结构与算法-数组

南充鼻孔上翻矫正术医院名次!鼻孔上翻矫正术价格:4862元~16650元

https://mc.wsh-study.com/mkdocs/数据结构与算法-数组/1.jpg

数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低内存占用,在这里数据结构起到相当重要的作用。此外数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。

为什么学习数据结构和算法?

关于数据结构和算法,以前看到过一个例子,觉得很好,拿出来分享一下。

假如你开了一家餐饮公司,是公司的老板,刚开始公司规模不大,只有几个员工,所以员工管理起来很简单,随叫随到。

后面随着公司发展,规模大了,员工也越来越多,管理起来就变得困难了。

于是你想到了给员工分组,然后每一组选出一个组长,平时有事先通知组长,然后由组长传达给自己的组员。

于是你就建立了公司管理层结构。

再后来,公司规模更大了,一个组长也管不过来下面太多的员工,你不得不再增加管理层级,如部门经理、主管、小组长等。

于是你的公司管理层级越来越多,最终形成了公司上下级管理结构,也就是我们经常看到的组织架构。

其实,这个例子中的公司组织结构就是 数据结构 ,而管理的方法就是 算法

同理,计算机中的数据也是像公司员工一样,需要合理的管理和组织,才能发挥出最大价值,而数据结构就是管理数据的,而算法则是处理数据的。

数据结构

首先什么是数据结构?

  • •数据结构是计算机存储、组织数据的方式。

  • •是指相互之间存在一种或多种特定关系的数据元素的集合。

  • •通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

  • •数据结构往往同高效的检索算法和索引技术有关。

数据结构又分为逻辑结构和物理结构。

  • •逻辑结构:简单来说,逻辑结构就是数据之间的关系。逻辑结构大概可以分两种:线性结构和非线性结构。

    • •线性结构:是一个有序数据元素的集合。其中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。常用的线性结构有: 栈,队列,链表,线性表。

    • •非线性结构:各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。常见的非线性结构有 二维数组,树等。

  • •物理结构:也叫存储结构,是数据的逻辑结构在计算机存储空间的存放形式(或映像)。存储器主要是针对内存而言的,像硬盘、软盘、光盘等外部存储器的数据组织通常用文件结构来描述。

    • •顺序存储:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作顺序存储结构。顺序存储结构是存储结构类型中的一种,该结构是把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++)的数组来描述的。

    • •链式存储:在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的).它不要求逻辑上相邻的元素在物理位置上也相邻.因此它没有顺序存储结构所具有的弱点,但也同时失去了顺序表可随机存取的优点。

    • •区别:

      顺序存储的特点是每个存储结点只含一个数据元素,所有存储结点相继存放在一个连续的的存储区,用物理位置上的相邻来表示逻辑关系。

      链式存储的特点是每个存储结点不仅包含数据元素,还包含一组指针,用指针来表示逻辑关系,逻辑上相邻的数据元素物理上不一定相邻。

算法

算法是特定问题求解步骤的描述,在计算机中表现为指令的有限序列,算法是独立存在的一种解决问题的方法和思想。对于算法而言,语言并不重要,重要的是思想。

算法的特性

  • •输入输出,算法具有零个或多个输入,至少有一个或多个输出

  • •有穷性,指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成

  • •确定性,算法的每一步骤都具有确定的含义,不会出现二义性

  • •可行性,算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成

算法设计要求

  • •正确性,算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案

  • •可读性,算法设计的另一目的是为了便于阅读、理解和交流

  • •健壮性,当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果

  • •时间效率高和存储量低

算法复杂度

算法的复杂度分为时间复杂度和空间复杂度。

时间复杂度

  • •时间复杂度的度量不是计算算法执行的具体次数,而是计算算法执行语句的次数,用大O的渐进法表示

  • •时间复杂度不计算时间,计算大概执行语句的次数

  • •在常数次时用1表示

  • •当算是执行次数是一个常数时,不区分用O(1)表示

  • •在计算时间复杂度时,可以忽略低次幂项和常数

  • •通常计算最坏情况下的时间复杂度

空间复杂度

  • •空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度

  • •计算空间复杂度时,可以忽略常数

  • •用1代替常数

  • •递归算法的空间复杂度=递归深度*每次递归所要的辅助空间

常用数据结构

数组、字符串、链表、栈、队列、双端队列、树。

数组

数组是物理结构顺序存储的典型代表,也是最基本的数据结构,它的特点是用一组连续的内存空间,来存储一组具有相同类型的数据。

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

缺点:插入、删除操作效率低,平均情况时间复杂度为O(n)。

1. 数组的基本使用

2. 数组元素的添加

数组的长度是固定的,在添加元素时,需要创建一个新的数组,然后将原数组的元素复制到新数组中,然后再将新元素添加到新数组中。

3. 数组元素的删除

数组的长度是固定的,在删除元素时,需要创建一个新的数组,然后将原数组中除了要删除的元素之外的其他元素复制到新数组中。

4. 面向对象的数组

面向对象的数组,即将数组封装成一个类,对外提供访问的方法,隐藏内部的实现细节。

总结

数组是物理结构顺序存储的典型代表,也是最基本的数据结构,它的特点是用一组连续的内存空间,来存储一组具有相同类型的数据。

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

缺点:插入、删除操作效率低,平均情况时间复杂度为O(n)。

在实际开发中,数组是最常用的数据结构之一,比如在Java中,ArrayList、Vector、Stack、PriorityQueue等底层都是通过数组来实现的。

参考文章

  • https://zhuanlan.zhihu.com/p/366372806

相关文章

TOP