java笔记——数据结构与算法相关
文章平均质量分 79
ww0peo
这个作者很懒,什么都没留下…
展开
-
java数据结构与算法① ——基本概念
判断数是否是2的整数次幂 n&(n-1) 特征 有穷性、确定性、可行性、有输入、有输出 设计原则 正确性、可读性、健壮性、高效率、低存储 时间复杂度 cpu 空间复杂度 内存 时间复杂度 用O来表示 常数型 线性型 对数型 平方型 ...原创 2019-09-18 17:57:08 · 154 阅读 · 0 评论 -
java数据结构和算法⑨——高效查找(二分查找和Hash查找)
二分查找 需要有序 时间复杂度为Nlog(N) Hash查找 jdk1.7时hashmap的结构就是hash数组和链表 jdk1.8后hashmap在链表数据个数大于8时会转换成红黑树 所以jdk1.8中hashmap用到的数据结构有hash数组链表和红黑树 ...原创 2019-09-18 17:58:46 · 507 阅读 · 0 评论 -
java数据结构和算法⑧——迪杰斯特拉算法(最短路径)
问题:求从1到其他每个点的最短路径 6 8 1 1 6 100 1 5 30 1 3 10 2 3 5 3 4 50 4 6 10 5 4 20 5 6 60 我们定义一个数组,表示1这个点到其他的点的所有最短距离。 开始我就在第1这个点 贪心:比如我想通过1到其他的点。如果要产生一个中间点就可以到其他的点,那么我找离我最近的那个点走就一定能到最短的路。 那么我们就应该找离1最近的那个点去中...原创 2019-09-18 17:58:34 · 269 阅读 · 0 评论 -
java数据结构和算法⑦——图论入门、BFS(广度搜索)和DFS(深度搜索)
1.图的定义:是一种比线性表和树更为复杂的数据结构,在图形结构中结点之间的关 系可以是任意的,任意两个数据元素都可能存在相关性,因此图论在计算中应用相当 广泛,知识图谱,推荐算法。 2.图的基本元素:结点,顶点,弧(边),弧尾,弧头,有向图(边右箭头), 无向图,权(边的权重),子图(递归),出度,入度, 回路:从当前点出发 最后又能回到自己。针对有向图 处理不好就是死循环。 子树: GC:树形结...原创 2019-09-18 17:58:21 · 725 阅读 · 0 评论 -
java数据结构和算法⑥——哈夫曼树
哈夫曼树 最优二叉树 计算下面三颗二叉树的带权路径长度总和: WPL(a):72+52+22+42=36() WPL(b):73+53+21+42=46() WPL©:71+52+23+43=35() 前缀编码 class MyNode implements Comparable<MyNode>{ private String chars = ""; //存的数据 p...原创 2019-09-18 17:58:11 · 346 阅读 · 0 评论 -
java数据结构和算法⑤——二叉搜索树、红黑树和Btree
二叉搜索树又叫二叉查找树,二叉排序树;它具有以下特点: 1.如果它的左子树不为空,则左子树上结点的值都小于根结点。 2.如果它的右子树不为空,则右子树上结点的值都大于根结点。 3.子树同样也要遵循以上两点 2的N次一定要随时记得 为什么又叫做二叉排序树呢? 只要一颗树是二叉搜索树,那么它的中序 遍历一定是有序的。 看右边的这颗二叉树,它的中序遍历为: 左 根(输出) 右 0 3 4 5 6 8 我...原创 2019-09-18 17:58:02 · 278 阅读 · 0 评论 -
java数据结构和算法④——树论基础和归并排序
树是数据结构和算法分析与设计中的一种非常重要的结构,由N个节点组成的 具有层次结构的模型。其主要有 一下几个特点: 1.有一个根节点,一般称为root节点 2.每一个元素都被称为node 3.除了root节点外,其余的节点都会被分成n个互不相交的集合,子树。递归 具体的结构如下所示: 树形结构里面的基本术语: 结点:树形结构里面的元素 子树:当结点大于1时,其余的结点分为的互不相交的集合称为子树 ...原创 2019-09-18 17:57:53 · 125 阅读 · 0 评论 -
java数据结构和算法③——贪心和动态规划
贪心算法 概念:贪心算法又叫做贪婪算法,它在求解某个问题是,总是做出眼前最大利益。 也就是说只顾眼前不顾大局,所以它是局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。 贪心算法其最重要的两个点就是: 贪心策略 通过局部最优解能够得到全局最优解 会议室安排问题: 有N个同等级的...原创 2019-09-18 17:57:40 · 260 阅读 · 0 评论 -
java数据结构和算法②——排序算法
不引入第三个变量交换两个变量的值 a = a + b b = a - b a = a - b 1.冒泡排序:其核心就是两两比较,但是不是和所有人比价你 public static void main(String[] args) { Scanner cin = new Scanner(System.in); int n = cin.nextInt(); int data[] = new i...原创 2019-09-18 17:57:24 · 94 阅读 · 0 评论 -
java数据结构和算法⑩——倒排索引
正向索引是用key找value 倒排索引是用value找key 类似于hash 分词的颗粒度 建索引的时候用最小颗粒度:分出所有情况原创 2019-09-18 17:58:56 · 354 阅读 · 0 评论