# java数据结构And算法 **Repository Path**: jayteen/DatastructureAndAlgorithm ## Basic Information - **Project Name**: java数据结构And算法 - **Description**: java版数据结构和算法学习,包含常见数据结构(稀疏数据,链表,队列,树,图等)以及十大算法(贪心算法,回溯...)解决八皇后问题,骑士周游问题.. - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 11 - **Created**: 2023-05-16 - **Last Updated**: 2023-05-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #文章地址:https://www.jianshu.com/p/929ca9e209e8 #前言 >关于个人这段日子,一些碎片化时间的利用,算是积累也是分享,如有不足还请指教。 也有三个多月,86%以上都已完结,今后会继续更新,填充,毕竟学习是无尽的。 #Gitee仓库地址 https://gitee.com/TK_LIMR/DatastructureAndAlgorithm.git #友情地址 23种设计模式:https://www.jianshu.com/p/63df8cd03619 #目录 ###一、数据结构: >[1.1、稀疏数组](https://www.jianshu.com/p/61ee94e17088) [1.2、队列](https://www.jianshu.com/p/538007cb152f) [2.1、链表{单向,双向}](https://www.jianshu.com/p/0ed74608baee) [2.2、Josephu(约瑟夫)问题---单向环形(也称丢手绢问题)](https://www.jianshu.com/p/1b5fdfeaf679) ------------------------------------------加餐👇--------------------------------------- [2.3、跳表【跳跃链表】]() [2.4、Lru【双向链表+HashMap】]() ------------------------------------------加餐👆--------------------------------------- 3、栈及波兰表达式{前,中,后缀【以及转换】} ----> 栈,波兰表达式两套计算器实现 [3.1、栈](https://www.jianshu.com/p/0b315c2fcee7) [3.2、波兰表达式](https://www.jianshu.com/p/39b4959ac4fb) 4、递归及回溯算法 ----> 八皇后问题 [4.1、递归](https://www.jianshu.com/p/ab1cebb59073) [4.2、回溯算法](https://www.jianshu.com/p/5c4e73aaef4a) [4.3、八皇后问题](https://www.jianshu.com/p/f616426e04c0) 5、排序算法(插入【直插,希尔】,选择【简单,堆】,交换【冒泡,快速】,并归,基数) [5.0、算法的时间复杂度](https://www.jianshu.com/p/df90ba2b0ff4) [5.1、插入算法](https://www.jianshu.com/p/c0e309b95a71) [5.2、选择算法](https://www.jianshu.com/p/1809e88ee0db) [5.3、交换算法](https://www.jianshu.com/p/2c7eec0605ab) [5.4、归并算法](https://www.jianshu.com/p/91a60a9c1b90) [5.5、基数算法](https://www.jianshu.com/p/cd0f81f97263) ------------------------------------------加餐👇--------------------------------------- [5.6、TimSort算法【插入+归并】]() ------------------------------------------加餐👆--------------------------------------- >6、查找算法(线性,二分,插值,斐波那契{也称黄金分割}) >[6.1、线性查找算法](https://www.jianshu.com/p/9f72e96052b1) [6.2、二分查找算](https://www.jianshu.com/p/e9e08a9cb0d3)【递归】 [6.3、插值查找算法](https://www.jianshu.com/p/5eb53a8b9df3) [6.4、斐波那契查找(黄金分割)算法](https://www.jianshu.com/p/ad25adf14fd8) 7、哈希表(散列):增删改查 [7.1、哈希表(散列)](https://www.jianshu.com/p/002b0552d1d9) 8、基础树结构(二叉树,顺序存储二叉树,线索化二叉树),注:标题不删除 [8.0、数组-链表-树区别](https://www.jianshu.com/p/891aededdf1d) >[8.1、二叉树](https://www.jianshu.com/p/2d1f3520a8c4) [8.2、顺序存储二叉树](https://www.jianshu.com/p/651c7dacf934) [8.3、线索化二叉树](https://www.jianshu.com/p/cc6a6ec9940c) >9、树结构场景(堆排序,赫夫曼树,赫夫曼编码,二叉排序树,平衡二叉树(AVL树)) [9.1、堆排序](https://www.jianshu.com/p/ebca7fe6c2c5) [9.2、赫夫曼树](https://www.jianshu.com/p/237f1fbe5ac6) [9.3、赫夫曼编码](https://www.jianshu.com/p/ca4bb0b21c55) [9.4、二叉排序树](https://www.jianshu.com/p/634ba9d7eff1) [9.5、平衡二叉树(AVL树)](https://www.jianshu.com/p/c1f2027406e8) [9.5、红黑树(AVL树)](https://www.jianshu.com/p/c7ff38281231) 10、多路查找树(二叉树与B树,2-3树,B树、B+树和B*树) [10.0、二叉树与B树,2-3树,B树、B+树和B*树](https://www.jianshu.com/p/f224de2dc57f)【★】 [10.1、二叉树与B树 ](x)【↑】 [10.2、2-3树 ](https://www.jianshu.com/p/16dc7ed46fb6)【↑↑】 [10.3、B树 ](x)【↑↑↑】 [10.4、B+树和B*树 ](x)【↑↑↑↑】 11、图(深度优先搜索和广度优先搜索) [11.1、图(DFS and BFS )](https://www.jianshu.com/p/bf7aa227c16b) ###二、十大常用算法 >[1、二分查找](https://www.jianshu.com/p/e0c03f4e33cb)【非递归】 [2、分治算法](https://www.jianshu.com/p/67344f3f9a36)【汉诺塔传说】 [3、动态规划](https://www.jianshu.com/p/14630b47b04e)【背包问题】 [4、KMP](https://www.jianshu.com/p/e1bd88c3a46b)【暴力匹配? no no no】 [5、贪心算法](https://www.jianshu.com/p/547f49df4f7b)【我只要最好!】 [6、普里姆算法](https://www.jianshu.com/p/759a1cfefc72)【修路问题--最小生成树】 [7、克鲁斯卡尔算法](https://www.jianshu.com/p/af5d81c62d71)【公交车问题--最小生成树】 [8、迪杰斯特拉算法](https://www.jianshu.com/p/f0163e8ea57e)【最短路径算法 --- 某一个顶点到其他顶点的最短路径】 [9、弗洛伊德算法](https://www.jianshu.com/p/a297bfe16086)【最短路径算法 --- 各个顶点之间的最短路径】 [10、马踏棋盘算法](https://www.jianshu.com/p/6a5a4d28c3ad)【骑士周游问题 --- DFS(回溯)+贪心算法】 ------------------------------------------加餐👇--------------------------------------- [11、雪花算法]()【传说,是UUID的 前辈(千倍)】 ------------------------------------------加餐👆--------------------------------------- #算法和数据结构分类 >1、我们写的程序他和数据结构还有算法什么关系呢?其实 程序=数据结构+算法 2、首先算法的分类其实很多,每个领域的算法懂不同,人工智能的话(数据挖掘,机器学习,图像识别) java的话(基本算法,数据结构算法,最短路径动态规划等等), 但是我觉得学java作为应用型人才,主要的还是基本算法,分为排序和搜索 3、数据结构的分类:线性结构和非线性结构。 线性:数组,队列,链表,栈 非线性:二维数组,多维数组,广义表,树结构,图结构 知识点补充:数据的逻辑结构 >1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系 2.线性结构:数据结构中的元素存在一对一的相互关系; 3.树形结构:数据结构中的元素存在一对多的相互关系; 4.图形结构:数据结构中的元素存在多对多的相互关系。 百度百科中数据结构补充: >![image.png](https://upload-images.jianshu.io/upload_images/19532021-ab53af61bd001c06.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![image.png](https://upload-images.jianshu.io/upload_images/19532021-7e5b3da2cf9e8538.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ###注:本文绝大数参考 业内大咖 韩顺平的资料,以及线上绝多权威文章博客