美文网首页
01数据结构之基础知识总结

01数据结构之基础知识总结

作者: 7分醉 | 来源:发表于2018-05-20 18:35 被阅读13次

数据结构

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科
程序设计=数据结构+算法

结构,简单的理解就是关系,比如分子结构,就是说组成分子的原子之间的排列方式。严格点说,结构是指各个组成部分相互搭配和排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。那数据结构是什么?

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

按照视点的不同,我们把数据结构分为逻辑结构和物理结构。

逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系。

集合:数据之间无关系
线性:一对一关系
树形:一对多关系
图形:多对多关系

物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式。

顺序存储
链式存储

算法

算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。

输入:零个或多个输入
输出:至少一个或多个输出
有穷性:在执行有限的步骤后会结束,不会无限循环。执行时间也在合理范围内
确定性:算法的每一步都有具体含义,在一定条件下只有一条执行路径。
可行性:每一步都是可行的

好的算法,应该具有正确性、可读性、健壮性、高效率和低存储量的特征。

算法效率度量方法:

事后统计:统计所需时间
事前分析:估算

时间复杂度

执行次数 函数阶 非正式术语
12 O(1) 常数阶
2n+3 O(n) 线性阶
3n2 +2n+1 O(n2 ) 平方阶
5log2 n+20 O(logn) 对数阶
2n+3nlog2 n+19 O(nlogn) nlogn阶
6n3+2n2 +3n+4 O(n3 ) 立方阶
2n O(2n ) 指数阶

常用的时间复杂度所耗费的时间从小到大依次是:

O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

顺序存储与链式存储


屏幕快照 2018-05-20 下午6.30.13.png

栈与队列


栈(stack)是限定仅在表尾进行插入和删除操作的线性表。
我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(LastIn First Out)的线性表,简称LIFO结构。
理解栈的定义需要注意:
首先它是一个线性表,也就是说,栈元素具有线性关系,即前驱后继关系。只不过它是一种特殊的线性表而已。定义中说是在线性表的表尾进行插入和删除操作,这里表尾是指栈顶,而不是栈底。

它的特殊之处就在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。这也就使得:栈底是固定的,最先进栈的只能在栈底。

队列
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。

相关文章

  • 01数据结构之基础知识总结

    数据结构 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科程序设计...

  • 数据结构和算法学习汇总

    基础知识 01 - 数据结构和算法的认识[https://www.jianshu.com/p/c54d1cb15f...

  • 2019-01-14至2019-01-20,本周Python学习

    今天一天都在赶车,差点忘记写总结。。本周开始接触Python基础知识了,主要是数据结构、循环以及if语句,以看书和...

  • 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java...

  • 数据结构01-顺序表与链表

    数据结构01-顺序表与链表 一、前言 1.什么是数据结构 数据结构是计算机存储、组织数据的方式。数据结构是指相互之...

  • redis笔记

    redis基础知识 数据结构 底层数据结构 SDS 双向链表 压缩列表 跳跃表 Hash表 整数数组 对外数据结构...

  • 数据结构与算法学习-001(基本概念)

    一、基础知识 数据结构常用术语:数据结构中最基本的5个概念: 数据,数据元素,数据项,数据对象,数据结构;数据结构...

  • RabbitMQ总结

    RabbitMQ总结 基础知识 为什么要用消息队列 队列是一种先进先出的数据结构。 消息队列是分布式系统中重要的组...

  • 怎么提高自己初中数学的教学能力

    1,自己要总结基础知识,自己要去总结基础知识,自己要定个计划,把初中数学的基础知识给总结出出来。 2,自己要多讲课...

  • 数据结构之栈

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

网友评论

      本文标题:01数据结构之基础知识总结

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