![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 78
长白山西红柿
这个作者很懒,什么都没留下…
展开
-
Timsort——Java源码阅读记录
在工作的时候用到了对泛型集合排序,本来以为里面也是像排序数组一样使用双轴快排,但是跟着Collections.sort()源码里发现是用了TimSort.sort()的排序,去网上简单的搜索了一下,说TimSort用了归并排序,并极大程度的利用了自然界很多数都已经拍好序了这个规律,其中比较好的文章是:世界上最快的排序算法——Timsort,我在看完源码之后虽然看"懂"了,TimSort它是怎么做的,但是不清楚它为什么这么做,这篇文章就解答了我很多疑惑。为了帮助大家更好的理解TimSort,也...原创 2021-04-05 15:02:12 · 248 阅读 · 0 评论 -
遍历子序列(递归与非递归)
递归: public static void main(String[] args){ int[] array = {1, 2, 3, 4, 5}; for (int i = 1; i <= array.length; i++) { findChildOrder(0, 1, array, new int[i]); ...原创 2019-03-26 10:58:21 · 604 阅读 · 0 评论 -
由前序遍历和中序遍历还原二叉树非递归算法
原理:前序遍历的第一个为根结点,在中序遍历中找到对应的结点位置后,在该位置左侧为根结点的左子树,在该位置右侧的为右子树,并可以找到在前序遍历中根结点左子树的的前序遍历和右子树的前序遍历,这两个数组的第一个就分别为根结点的左右孩子。思路:一层一层的还原二叉树,还原一层的结点需要两种信息,上一层的所有结点,以及上一层每个结点左右孩子的信息。还原算法以及前序、中序和后序遍历非递归算法pac...原创 2019-02-01 14:58:32 · 1297 阅读 · 0 评论