什么是数据结构?
数据结构是指相互之间存在的一种关系或多种关系的数据元素的集合和该集合中数据元素之间的关关系组成。简单点就是数据和数据之间的关系!!!
基础数据结构
数组
优点 | 缺点 |
---|---|
插入快,如果知道下标,可以快速的存取 | 查找慢,删除慢,大小固定 |
有序数组
优点 | 缺点 |
---|---|
比无序数组查询快 | 删除和插入慢,大小固定 |
栈
优点 | 缺点 |
---|---|
提供后进后出的方式存储 | 存取其他元素很慢 |
队列
优点 | 缺点 |
---|---|
提供先进先出的方式存储 | 存取其他元素很慢 |
链表
优点 | 缺点 |
---|---|
插入快,删除慢 | 查询慢 |
二叉树
优点 | 缺点 |
---|---|
查询,插入,删除快(前提是树平衡) | 删除算法复杂 |
高级数据结构
红黑树
优点 | 缺点 |
---|---|
查询,插入,删除快(前提是树平衡) | 算法复杂 |
2-3-4 树
优点 | 缺点 |
---|---|
查询,插入,删除快(前提是树平衡) | 算法复杂 |
哈希表
优点 | 缺点 |
---|---|
如果知道关键字则存取快,插入快 | 删除慢,如果不知道关键字则存取很慢 |
堆
优点 | 缺点 |
---|---|
插入快,删除快 | 对其他元素存取慢 |
图
优点 | 缺点 |
---|---|
对现实世界模拟 | 算法慢且复杂 |
算法概述
算法的定义
是指解题方案的准而完整的描述,是一系列的解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制
算法的基本要求
正确性
可读性
健壮性
时间复杂度
空间辅助度
大O表示法
什么是大O表示法?
大O表示法可以告诉我我们算法的快慢
大O表示的是操作数,它指出了算法运行时间的增速
O(n) 括号里的是操作数。
简介
O(n!) | 随着数据量的增加,运行时间近乎是直线上升 |
O(2^n) | 随着数据量的增加,运行时间也几乎是直线上升 |
O(n^2) | 冒泡排序,插入排序,选择排序的时间复杂度 |
O(nlogn) | 随着数量增多,运行时间平缓上升 |
O(logn) | 冒泡排序,插入排序,选择排序的时间复杂度 |
O(1) | 不受数据量影响,栈和队列有可以达到! |