数据结构和算法读书笔记-数据结构理论
来源:互联网 发布:淘宝上的组装机能买吗 编辑:程序博客网 时间:2024/06/16 16:58
1、数据结构
(1)常见的数据结构类型:数组、有序数组、堆栈、队列、链表、二叉树、哈希表、图
(2)存储用数据结构:数组、链表、树、哈希表
(3)程序员编写算法用数据结构:堆栈、队列(优先级队列)
2、算法作用在数据结构上,一般需要考虑如下问题
(1)插入一个数据项
(2)删除一个数据项
(3)根据关键字查找指定项
(4)对所有数据进行排序
3、如何评价算法
(1)比较次数+移动次数
(2)公式表示:大O表示法,用于描述【算法的速度与数据项个数之间的关系】
(3)增加数据尺度看算法才有意义,例如线性查找10条记录平均需要比较N/2=5次,二分查找最多需要比较4次,对100条记录,线性查找
需要比较50次,二分查找需要比较7次,对1000条记录,结果是500比10,而1000000条记录结果是500000比20
(4)忽略常数,例如T=K*N/2与T=K*N成正比;T=log2(N)与T=log10(N)、T=log(N)成正比
4、常见算法评估
(1)无需数组插入:O(1)
(2)无需数组删除:O(N)
(3)有序数组插入:O(N)
(4)有序数组删除:O(N)
(5)线性查找:O(N)
(6)二分查找:O(log(N))
5、理想数据结构:插入、删除和查找都很快,时间复杂度为O(1)或O(logN)
6、数组潜在问题
(1)查找:无序数组查找时间为O(N)
(2)插入:有序数组插入时需要【比较】和【移位】
(3)删除:无序、有序数组删除时都需要【比较】和【移位】
(4)空间分配:数组在创建时要求指定容量大小,并且不可改变,不够灵活。虽然向量(Vector)支持以固定大小扩展内存,但也是快满了,扩充到2倍原来空间
7、链表针对性优势
(1)查找:和数组查找时间复杂度一样,都是O(N)
(2)插入:在表头(单链表)和表尾(双端链表)插入为O(1),在中间位置插入时只需要【比较】
(3)删除:在表头删除为O(1),在中间位置删除时只需要【比较】
(4)空间分配:灵活内存分配
- 数据结构和算法读书笔记-数据结构理论
- 《Swift数据结构和算法》读书笔记专题
- 读书笔记(1)—数据结构和数据算法综合资料
- 《数据结构和算法分析---C语言描述》读书笔记
- 《Java数据结构和算法(第二版)》读书笔记
- 《数据结构和算法分析—C语言描述》读书笔记
- 《大话数据结构》读书笔记(一)——数据结构基础和算法
- 【排序算法】《Java数据结构与算法》读书笔记
- 数据结构-读书笔记
- 《数据结构》读书笔记
- 数据结构读书笔记
- 数据结构读书笔记
- 数据结构 读书笔记
- 数据结构读书笔记
- 数据结构读书笔记
- 数据结构读书笔记
- 算法和数据结构
- 学习数据结构和算法
- CodeForces
- 计算机网络基础
- eclipse下的mybatis插件:MyBatipse
- パソコンとは
- 华为code中的字符串通配符匹配
- 数据结构和算法读书笔记-数据结构理论
- 信仰的力量-比特币量化之定投策略
- Hadoop-介绍
- 通过轮询实现消息弹窗提醒
- android Intent和Intent过滤器几个注意事项
- Exception in thread "main" java.lang.UnsupportedClassVersionError的另类解决办法
- Day02
- Pólya计数法的应用
- Java从入门到放弃——选择排序