前言
关于个人这段日子,一些碎片化时间的利用,算是积累也是分享,如有不足还请指教。
也有三个多月,86%以上都已完结,今后会继续更新,填充,毕竟学习是无尽的。
Gitee仓库地址
https://gitee.com/TK_LIMR/DatastructureAndAlgorithm.git
友情地址
23种设计模式:https://www.jianshu.com/p/63df8cd03619
目录
一、数据结构:
1.1、稀疏数组
1.2、队列
2.1、链表{单向,双向}
2.2、Josephu(约瑟夫)问题---单向环形(也称丢手绢问题)
------------------------------------------加餐👇---------------------------------------
2.3、跳表【跳跃链表】
2.4、Lru【双向链表+HashMap】
------------------------------------------加餐👆---------------------------------------
3、栈及波兰表达式{前,中,后缀【以及转换】} ----> 栈,波兰表达式两套计算器实现
3.1、栈
3.2、波兰表达式
4、递归及回溯算法 ----> 八皇后问题
4.1、递归
4.2、回溯算法
4.3、八皇后问题
5、排序算法(插入【直插,希尔】,选择【简单,堆】,交换【冒泡,快速】,并归,基数)
5.0、算法的时间复杂度
5.1、插入算法
5.2、选择算法
5.3、交换算法
5.4、归并算法
5.5、基数算法
------------------------------------------加餐👇---------------------------------------
5.6、TimSort算法【插入+归并】
------------------------------------------加餐👆---------------------------------------
6、查找算法(线性,二分,插值,斐波那契{也称黄金分割})
6.1、线性查找算法
6.2、二分查找算【递归】
6.3、插值查找算法
6.4、斐波那契查找(黄金分割)算法
7、哈希表(散列):增删改查
7.1、哈希表(散列)
8、基础树结构(二叉树,顺序存储二叉树,线索化二叉树),注:标题不删除
8.0、数组-链表-树区别
8.1、二叉树
8.2、顺序存储二叉树
8.3、线索化二叉树
9、树结构场景(堆排序,赫夫曼树,赫夫曼编码,二叉排序树,平衡二叉树(AVL树))
9.1、堆排序
9.2、赫夫曼树
9.3、赫夫曼编码
9.4、二叉排序树
9.5、平衡二叉树(AVL树)
9.5、红黑树(AVL树)
10、多路查找树(二叉树与B树,2-3树,B树、B+树和B*树)
10.0、二叉树与B树,2-3树,B树、B+树和B*树【★】
10.1、二叉树与B树 【↑】
10.2、2-3树 【↑↑】
10.3、B树 【↑↑↑】
10.4、B+树和B*树 【↑↑↑↑】
11、图(深度优先搜索和广度优先搜索)
11.1、图(DFS and BFS )
二、十大常用算法
1、二分查找【非递归】
2、分治算法【汉诺塔传说】
3、动态规划【背包问题】
4、KMP【暴力匹配? no no no】
5、贪心算法【我只要最好!】
6、普里姆算法【修路问题--最小生成树】
7、克鲁斯卡尔算法【公交车问题--最小生成树】
8、迪杰斯特拉算法【最短路径算法 --- 某一个顶点到其他顶点的最短路径】
9、弗洛伊德算法【最短路径算法 --- 各个顶点之间的最短路径】
10、马踏棋盘算法【骑士周游问题 --- DFS(回溯)+贪心算法】
------------------------------------------加餐👇---------------------------------------
11、雪花算法【传说,是UUID的 前辈(千倍)】
------------------------------------------加餐👆---------------------------------------
算法和数据结构分类
1、我们写的程序他和数据结构还有算法什么关系呢?其实 程序=数据结构+算法
2、首先算法的分类其实很多,每个领域的算法懂不同,人工智能的话(数据挖掘,机器学习,图像识别)
java的话(基本算法,数据结构算法,最短路径动态规划等等),
但是我觉得学java作为应用型人才,主要的还是基本算法,分为排序和搜索
3、数据结构的分类:线性结构和非线性结构。
线性:数组,队列,链表,栈
非线性:二维数组,多维数组,广义表,树结构,图结构
知识点补充:数据的逻辑结构
1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系
2.线性结构:数据结构中的元素存在一对一的相互关系;
3.树形结构:数据结构中的元素存在一对多的相互关系;
4.图形结构:数据结构中的元素存在多对多的相互关系。
百度百科中数据结构补充: