算法(JAVA)
文章平均质量分 71
算法也即是数学的逻辑思想精髓,而计算机就是数学的产物。本专栏将按照算法的广度和深度两个方向进行逐步探讨。
包括:基本思想,排序,链表,树,图和有趣的经典算法。会不断更新
蘑菇蘑菇不会开花~
认真负责的态度做好眼前的事
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法 | 归并排序 | 小和、逆序对问题
在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个给定数组的小和。例子:数组为:[1,3,4,2,5]1左边比1小的数:没有3左边比3小的数:14左边比4小的数:1,32左边比2小的数:15左边比5小的数:1,3,4,2所以小和为1+(1+3)+1+(1+3+4+2)=16:找每一个数右边比当前数大的个数,(个数 * 当前数) 的累加和就是结果。原创 2024-09-09 09:00:00 · 423 阅读 · 0 评论 -
算法 | 基础 | 局部最小值问题 | 二分发
给定一个不包含相同元素的整数数组,求一个局部最小值。题解1)数组第一个元素比第二个元素小,即为局部最小值。2)数组最后一个元素比它前一个元素小,即为局部最小值。3)若不满足,那么局部最小值必在数组首尾两元素之间的某个位置取得。此时可以采用二分法思想,看中间位置是否符合条件,不符合就分成两部分,从不符合的那一边继续操作。原创 2024-09-08 11:00:00 · 576 阅读 · 0 评论 -
算法 | 基础 | 出现奇数次的数字
本篇是关于异或()运算的运用。后期看算法过程中如果再碰到异或的都会收录到本篇中。原创 2024-09-07 12:41:40 · 906 阅读 · 0 评论 -
初级排序算法
定义首先, 找到数组中最小的那个元素。 其次, 将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换) 。 再次, 在剩下的元素中找到最小的元素, 将它与数组的第二个元素交换位置。 如此往复, 直到将整个数组排序。 这种方法叫做选择排序, 因为它在不断地选择剩余元素之中的最小者。选择排序的内循环只是在比较当前元素与目前已知的最小元素(以及将当前索引加 1 和检查是否代码...原创 2019-01-04 16:14:04 · 290 阅读 · 1 评论 -
数据结构与算法之红黑树
在上一篇我们说到2-3树在某些情况插入后的平衡操作可能会使得效率降低,在2-3查找树基础上改进的红黑树不仅具有较高的效率。那么红黑树是如何操作的呢?定义红黑树是一种近似平衡的二叉查找树,它能够确保任何一个节点的左右子树的高度差不会超过二者中较低那个的一陪。具体来说,红黑树是满足如下条件的二叉查找树(binary search tree):每个节点要么是黑色要么是红色根节点是黑色每个叶子节点是黑色,并且为空节点(还有另外一种说法就是,每个叶子结点都带有两个空的黑色结点(被称为黑哨兵),如果一个结点原创 2021-07-25 18:06:58 · 386 阅读 · 0 评论 -
数据结构与算法之2-3树
我们在上篇二叉查找树中曾介绍过二叉查找树有可能会出现其中一个极端情况,所有的结点变成了一条链。如图我们当然希望我们能保存二叉查找树的平衡性,但是在动态插入过程中保证树的完美平衡代价太大了。我们退而求其次,学习一种新的数据结构。定义2-3查找树是一种平衡树的思想,我们可以将标准二叉查找树的结点称为2-结点(含有一个键和两条链),而现在我们引入3-结点,它含有两个键和三条链,每一条链就是一个分区。一棵2-3查找树要么为空,要么满足满足下面两个要求:A、2-结点:含有一个键(及对应值)和两条链接,左链接原创 2021-07-25 10:58:17 · 505 阅读 · 0 评论 -
数据结构与算法之二叉搜索树
目录一、定义和特性二、复杂度2.1 查找复杂度2.1.1两种极端情况完全二叉树单节点2.1.2 前序遍历2.1.3 中序遍历2.1.4 后续遍历2.1.5 查找一个节点2.2 构造复杂度2.3 删除复杂度三、完整代码一、定义和特性二叉查找树(BST:Binary Search Tree)是一种特殊的二叉树,它改善了二叉树节点查找的效率。二叉查找树有以下性质:若左子树不空,则左子树上所有节点的值均小于它的根节点的值;若右子树不空,则右子树上所有节点的值均大于它的根节点的值;左、右子树也分别为二叉排原创 2021-07-25 00:05:31 · 928 阅读 · 0 评论 -
算法——把二元查找树转变成排序的双向链表(JAVA)
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 转换成双向链表 1=2=3=4=5=6=7=8=9=10=11=12=13=14=15。代码如下public class BinaryTree2LinkedTree { private static TreeNode head,tail; static...原创 2018-09-12 16:25:37 · 490 阅读 · 0 评论 -
算法设计思想(1)——贪婪法
概念 贪婪法(greedy algorithm),又称为贪心算法,是寻找最优解问题的常用方法。这种方法模式一般将求解过程分成若干个步骤,在每个步骤都应用贪心原则,选取当前状态下最好的或者最优的选择,并以此希望最后堆叠出的结果也是最好的或者最优的解。贪婪法每次决策都以当前情况为基础并根据某个最后原则进行选择,不从整体上考虑其他各种可的情况。贪婪法和动态规划法以及分治法一样,都需要对问题进行...原创 2018-09-12 10:48:47 · 4258 阅读 · 0 评论
分享