最近面试过程中很多面试题和面试官问的都是一些数据结构上的问题,特自己把数据结构与算法看了看,做的读书笔记,希望对面试中的人也有帮助。
1.数据结构和算法的定义
数据结构:数据结构是对在计算机内存(或磁盘)中的数据的一种安排。
数据结构包括数组、链表、栈、二叉树、哈希表等等。
算法:算法对数据结构的数据进行各种处理。
例如:查找一条特殊的数据项或对数据进行排序。
2.数据结构的特点
数据结构
优点
缺点
数组
插入快,根据下标非常快的存取
查找慢,删除慢,大小固定
有序数组
插入快,根据下标非常快的存取
查找慢,删除慢,大小固定
栈
提供后进先出的方式存取
存取其他项很慢
队列
提供先进先出的方式存取
存取其他项很慢
链表
插入快,删除快
查找慢
二叉树
查找、插入、删除都快(如果树保持平衡)
删除算法复杂
红-黑树
查找、插入、删除都快(树总是平衡)
算法复杂
2-3-4树
查找、插入、删除都快(树总是平衡)类似的树对磁盘存储有用
算法复杂
哈希表
如果关键字已知则存取极快。插入快
删除慢。如果不知道关键字则存取很慢,对存储空间使用不充分
堆
插入、删除快,对最大数据项的存取很快
对其他数据项存取慢
图
对现实世界建模
有些算法慢且复杂
3.算法的概述
增删改查、排序、递归
4.基本数据类型
名称
大小
取值范围
boolean
1
true,false
byte
8
-~+
char
16
\u~\uFFFF
short
16
-~+
int
32
long
64
float
32
10(-38)~10(+38);7位
double
64
10(-)~1-(+);15位
白癜风医院白癜风能治好吗