龙空技术网

基础数据结构-绪论(一)

小宋之 224

前言:

如今你们对“最短路径floyd算法演示”都比较着重,我们都想要分析一些“最短路径floyd算法演示”的相关内容。那么小编在网络上汇集了一些关于“最短路径floyd算法演示””的相关知识,希望大家能喜欢,各位老铁们快快来了解一下吧!

数据结构-绪论(一)存储数据结构算法概述数据结构-线性表(二)数组删除插入交换移动链表单/双,循环,静态链表单链表逆序单链表的,从尾部输出(单次遍历)求单链表的中间节点(不知道链表的长度)单链表求得倒数第K个元素单链表插入排序两个顺序单链表的,合并(顺序)两个单链表的,公共点判读单链表是否带环求环的长度得到环的切入节点求带环链表的长度求出环中的任意,节点的最长距离节点求带环链表的相交点栈递归共享栈斐波那契数列用两个栈,实现一个队列求最新栈元素,要求时间复杂度是O(1)一个数组实现两个栈,本质上就是顺序存储的共享栈如何实现逆序栈如何实现栈的排序内存栈的构成,栈区和堆区的说明队列循环队列优先队列两个队列实现,栈猫狗队列数据结构-串(三)KMP模式匹配算法BM算法Sunday算法最长公共子串数据结构-树(四)搜索二叉树红黑树B+树B-树默克尔树赫夫曼树数据结构-图(五)广度优先遍历深度优先遍历最小生成树-Prim(普利姆算法)最小生成树-Kruskal(克鲁斯卡尔)最短路径-Dijkstra(迪杰特斯拉)最短路径-Floyd(弗洛伊德算法)A*路径搜索算法关键路径算法

基础数据结构,总共分为5篇文章,依次来介绍说明,今天介绍第一篇绪论

数据结构-绪论存储数据结构算法

程序 = 数据结构 + 算法;

一切程序的来源都是数据之间的关系存储。

1、数据是什么呢?

数据,通俗的讲就是整型123,字符串ABC等数值类型,以及声音,图片,视频等等,最终以二级制数据存储到磁盘中;数据是计算机操作的对象,所有可输入的处理符号,且可被计算机识别的对象都成为数据

数据元素:是一个数据的集合,也成为"记录"

数据项:一个数据元素由若干个数据项组成

数据对象:性质相同的数据元素的集合

数据关系:相互之间存在的一种或是多种关系的数据元素集合


2、数据之间的关系有哪些?


无关系

一对一关系

一对多关系


多对多关系


3、算法及与数据结构之间的关系?

算法是解决问题求解步骤的描述,一条条的序列指令的步骤集合;

就像,如何炒一盘菜?

那么算法就可以理解为“菜谱”,那么数据结构就可以理解为“食材”,有了食材,有了菜谱,才能做出一份“程序”


接下来分别描述一下,数据结构和算法

数据结构

数据结构,也就是数据之间的关系,分为结构:逻辑结构和物理结构(也就是如何存储的)

逻辑结构集合结构 == 无关系定义:数据元素之间没有关系,只是存储在一个集合特点:数据元素是平等的线性结构 == 一对一的关系定义:数据元素之间是一对一线性关系特点:每个数据元素都有前驱或是后驱树形结构 == 一对多的关系定义:数据元素之间是一对多的层次关系特点:数据元素都有一个前驱或多个后驱图形结构 == 多对多的关系定义:数据元素之间是多对多的关系特点:数据元素之间相互之间存储结构

又叫做物理结构,是指数据元素的逻辑结构在计算机中的存储形式。

顺序存储结构定义:是把数据元素存放在连续的存储单元里例如:创建一个长度为10的整型数组,计算机就在内存中,按照一个整型(4个Btye)所占位置的大小乘以9,开辟一段连续的空间,然后第一个数据元素放在第一个位置,第二个数据放在第二个位置,依次存放特点:开辟的空间是连续的,索引查询比较快,会浪费多余的空间,需要预制数据元素的大小,空间扩展比较麻烦,插入/删除数据元素,则需要大量元素跟着移动链式存储结构定义:是把数据元素发在任意的存储单元里,每个数据元素中含有其对应逻辑关系的存储地址,也就是链式存储结构在分配空间的时候不是连续的,当然了也可以是连续的例如:现在医院排队系统,每个人过去先领取一个号,等着叫好,叫到的时候去看病,在等待的时候,可以爱去哪儿去哪儿;“号”就是一个指针存放数据元素的地址,通过“号”找到关联数据元素的位置特点:插入/删除数据元素比较灵活,查询效率较低,数据元素复杂的关系用链式存储可以更好的表示算法

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条特定指令都表示一个或多个操作

特性正确的输入和输出有穷性确定性可行性设计要求正确性可读性健壮性时间复杂度低和空间复杂度低时间复杂度

定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随着n的变化情况并确定T(n)的数量级,算法的时间复杂度,就是算法的时间量度T(n)=O(f(n))

常数阶 > 对数阶 > 线性阶 > nLogn阶 > 平方阶 > 立方阶 > 2^n > N! > 指数阶

空间复杂度

算法空间复杂度是通过计算算法所需的存储空间实现,算法空间复杂度的计算公式:S(n) = O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占用的存储空间的函数


例如:求证1+2+3+4+...+100?

基本的算法,遍历1到100个数,进行相加,时间复杂度O(n)

换成高斯算法,时间复杂度O(1)

1 + 2 + 3 + ... + 98 + 99 + 100 = a;

100 + 99 + 98 + ... + 3 + 2 + 1 = a;

上面两个表达式相加求证:2a =(100 + 1)* 100

a =(100 + 1)* 100 / 2

那么求,∑i = 1+2+3+…+n,得出∑i =(n + 1)* n/ 2

就好像上面说的算法,就像炒菜的菜谱(算法),在一定的食材(数据)中,如何做出一份又快又好吃的饭菜;


数据结构和算法


线性表



标签: #最短路径floyd算法演示 #sunday算法的原作者 #sunday 算法 #sunday算法的平均时间复杂度 #克鲁斯卡尔算法的时间复杂度是多少