参考:https://www.bilibili.com/video/BV1Zt411o7Rn
数据结构和算法,是独立于编程语言的,要用哪种语言来实现都是可以的。
概述
数据结构概述
什么是数据结构
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。
数据的物理存储结构
顺序存储结构
是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。数组就是顺序存储结构的典型代表。
链式存储结构
数据的逻辑存储结构
集合结构
集合结构中的数据元素同属于一个集合,他们之间是并列的关系,除此之外没有其他关系。
线性结构
线性结构中的元素存在一对一的相互关系。
树形结构
树形结构中的元素存在一对多的相互关系。
图形结构
图形结构中的元素存在一对多的相互关系。
算法概述
算法的定义
是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
算法的特征
- 输入:有0个或以上个数的输入参数。
- 输出:有至少一个输出结果。
- 有穷性:在有限的时间内可以得出结果,不能无限执行下去。
- 确定性:特定的输入参数有对应的输出结果,结果是确定的。
- 可行性:能够解决实际问题。
算法的基本要求
- 正确性
- 易读性
- 健壮性:输入不合理参数的时候,要有提示。
- 时间复杂度
- 空间复杂度
线性结构
- 数组
- 栈
- 队列
- 单链表
- 循环链表
- 双链表
- 递归
- 排序算法
树结构
哈希表
图结构
什么是数据结构?
简单来讲,就是数据与数据之间的关系。
数据结构分两类:
存储结构:数据在计算机中的物理存储结构。
逻辑结构:数据与数据之间有什么关系。
存储结构主要有两种:
顺序存储结构:一个萝卜一个坑,1234地整齐排列存储到计算机内。
链式存储结构:头结点包含第一个数据的地址信息,第一个数据又包含第二个数据的地址信息,如此循环下去,最后一个节点的地址信息为null。
【问题】这两种存储结构有什么优缺点?什么样的背景下产生这两种结构?
顺序结构做插入和删除的时候,需要移动的数据会很多;而链式结构,只要修改个别数据的地址信息就可以了。
二分查找法的java实现(可以记一下代码)