IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构-线性表(1) -> 正文阅读

[数据结构与算法]数据结构-线性表(1)

目录

.

前言:

一、算法综述:

二、?线性表

总结


前言:

????????从本科开始就混迹在CSDN了,但从今天开始我每天都会在博客中写一点自己看书的笔记或者是做项目(本人是机器人路径规划方向的)的时候遇到的困难和感悟。我看的数据结构是程杰的《大话数据结构》。

????????其实算法和数据结构的关系很紧密,如果单个拿出来讲,很少有人能讲明白,就算讲明白了也很少有人能立马听懂,所以国内有很多教材或者教学视频都是将这两部分做一个结合。因为本科不是学计算机的,只是相关的电子信息工程专业,所以对于做机器人路径规划的我还是得从头来过。在看数据结构之前,我尝试过直接看算法导论,给我的感受是,学着真的很枯燥有很多概念不能完全看懂或者完全看不懂。今天是第一天,所以废话有点多了,算是交待一下自己的主线(机器人路径规划)和副本(C++相关知识和嵌入式相关知识)

一、算法综述:

? ? ? ? 定义是:解决特定问题求解步骤的描述,在计算机中为指令的有限序列,并且每条指令代表一个或者多个操作。

算法有很多要求和性质,就个人的理解是:

? ? ? ? 用最少的资源高效地正确地解决特定的任务。

其中就包括了基本特性:输入输出有穷性确定性可行性

以及算法设计的要求:正确性可读性健壮性;

函数的渐近增长不难理解其中的道理,在这里已对数函数和一次函数(线性函数)做一个简单的例子:

线性函数和对数函数示意图

?当两个函数在某个点(这里是n点)以后,其中一个函数恒大于另外一个函数。

对于算法而言常用的有:

常数阶(1)<对数阶(lgn)<线性阶(n)<线性对数阶(nlgn)<平方阶(n^2)<立方阶(n^3)<指数阶(2^n)<阶乘(n!)< ···

这里说明一下:常数阶是指有限的操作比如运行几次的操作都称为常数阶,另外可以用O(1)表示比如:1<=O(1)<=15,这是允许的;以此类推n<=O(n)<=2.5n 也是允许的。这里的O(1)、O(n)就是所谓的常数阶、线性阶;

????????最后说明一下,在工程中,如果解决一个方案要比O(n^2)更多的时间为代价,是非常耗时的。通常要求时间复杂度要尽可能低,同时内存还不能占用太多。也就是形象的要求“吃下去的是草,挤出来的是奶,还得是纯牛奶,不能是水”。

另外算法还有很多基础概念,比如最好情况和最坏情况。这些在后面的总结中会一一表现出来,在这里就不过多的解释说明了。

二、?线性表

标题是线性表,但是直到现在才说线性表,因为算法绪论不得不提的原因,所以才迟迟没有进入正题。

线性表的定义:

零个或者多个数据元素的有限序列

其中需要了解的概念知识和专业术语有:

? ? ? ? 1. 线性表是有一个头一个尾的一串数据,就像一根线,中间没有分支,因此称作线性表;

? ? ? ? 2. 前(先)驱元素,比如在线性表中:a1就是a2的前驱元素;

? ? ? ? ? ? 后继元素:同理可得an就是an-1的后继元素;

? ? ? ? 3. 线性表的长度为:线性表元素的个数,是个数,是个数!不是数组的长度!!!

线性表的长度是根据线性表的插入和删除随时在改变的,而数组(动态数组除外)的长度是不会改变的。就像下面这样:

线性表长度和数组长度的区分

?插入和删除操作给出了一个最好和最坏的情况,以删除为例:

最好情况:删除最后一个元素,其余元素位置不变,只进行一次操作;

最坏情况:删除的是第一个元素,他的后继元素需要向前移动一个位置,那么而后的所有元素都需要移动,因此需要n次操作;

线性表的优缺点:

优点:存储空间占用最小,能够快速读(时间复杂度为O(1))取任意位置的数据;

缺点:插入和删除时间复杂度高(O(n)),容易造成控件碎片;

总结

????????由于线性表的优缺点较为明显,如何尽可能在保留线性表的优点的同时又要克服缺点成为了一个难题:链式存储结构方法的发明有效的克服了这个难题。链式存储结构分析在第二讲中分析。

2021-8-16

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:38:39  更:2021-08-17 15:40:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:44:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码