Java数据结构和算法笔记总结

第 1章 数据结构和算法概述

数据结构和算法的关系

  1. 数据 data 结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。
  2. 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决.
  3. 程序 = 数据结构 + 算法
  4. 数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。

数据结构和算法的应用

  1. 修路问题 => 最小生成树(加权值)【数据结构】+ 普利姆算法
  2. 最短路径问题 => 图+弗洛伊德算法
  3. 汉诺塔 => 分支算法
  4. 八皇后问题 => 回溯法
    总结:
    简单的数据结构可以完成
    难的需要数据结构加算法

线性结构和非线性结构

数据结构包括:线性结构和非线性结构。

线性结构

  1. 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系
  2. 线性结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表)。
    顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的
    链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
  3. 线性结构常见的有:数组、队列、链表和栈,后面我们会详细讲解.

非线性结构

非线性结构包括:二维数组,多维数组,广义表,树结构,图结构

第2章稀疏数组和队列

第2章稀疏数组和队列

第3章链表

链表 第一部分:单向链表增删改反转合并等

链表 第二部分:双向链表,单向的环形链表,约瑟夫问题,Josephu

第4章栈

栈第一部分(数组模拟栈,单链表模拟栈,应用)

栈第二部分(前缀、中缀、后缀表达式(逆波兰表达式))

第5 章递归

递归(递归介绍,迷宫问题,八皇后问题)

第6 章排序算法

算法复杂度(时间频度,时间复杂度介绍计算,空间复杂度)

排序算法基础(冒泡排序,选择排序,插入排序)

排序算法高阶(希尔排序,快速排序,归并排序)

Java排序算法-基数排序

第7 章查找算法

Java查找算法(线性查找,二分查找递归和非递归,插值查找,斐波那契查找算法)

第8 章哈希表

哈希表(散列表)-增删改查

第9 章树结构的基础部分

二叉树——增删改查

二叉树(顺序存储二叉树,线索化二叉树)

第10 章树结构实际应用

树结构实际应用(堆排序,赫夫曼树,哈夫曼树)

树结构实际应用(赫夫曼树编码)

树结构实际应用(二叉排序树,BST,二叉搜索树)

树结构实际应用(平衡二叉树,AVL 树)

第11 章多路查找树

多路查找树(了解一下)

第12 章图

图(,图的创建,深度优先遍历,广度优先遍历)

第13 章程序员常用算法

常用算法——分治算法(汉诺塔)

常用算法——动态规划算法(背包问题)

常用算法——KMP算法(字符串匹配问题,暴力匹配算法)

常用算法——贪心算法(集合覆盖问题)

常用算法——普里姆(prim)算法( 修路问题,最小生成树问题 )

常用算法——克鲁斯卡尔(Kruskal)算法(公交站问题,最小生成树问题 )

常用算法——迪杰斯特拉(Dijkstra)算法(最短路径问题)

常用算法——弗洛伊德(Floyd)算法(最短路径问题)

常用算法——马踏棋盘算法(骑士周游问题)

总结

如何学好Java?(看完受益匪浅)

猜你喜欢

转载自blog.csdn.net/weixin_46168350/article/details/108928617