![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
心态与习惯
trust yourself, then success will follow you.
展开
-
Dijkstra 双栈算法 java 代码 修改
读算法书,发现书上的 Dijkstra 双栈算法运行不了,原因在于 java 的 scanner 类有时候很难终止输入,程序不能正确运行。于是改写了原程序,让程序并不从控制台通过 scanner 类读写表达式,而是在程序里用字符串定义好表达式,就能正确运行了。该算法的原理是:通过两个栈,一个存符号,一个存数字,然后通过右括号来控制栈的进出与运算操作。改写后的代码如下:原创 2017-12-01 12:53:50 · 597 阅读 · 0 评论 -
将有序数组 归并排序 最多与最少比较次数
今天偶尔看到了归并排序的算法复杂度证明,对于将几个有序数组合并成一个有序数组的比较次数产生了兴趣。设有两个有序数组 arr1 与 arr2,数组长度分别为 m 与 n, 要合并成一个长度位 m+n 的有序数组 arr3.最差情况下:比较次数为 m+n-1此时,将数组 arr1 与数组 arr2 中的元素两两比较,将值小的放进数组 arr3, 直到数组 arr3 填满为止原创 2017-12-05 13:22:09 · 10854 阅读 · 2 评论 -
python 的记忆功能 lru_cache(),用于动态规划,
python 中若编写递归函数,为了减少计算时间,需要用到 memoize 或 memoized 功能,它们的作用是记忆函数每次运行的结果,这样当递归函数每次递归时,若已经计算过子函数,就直接从记忆中的结果获取,避免重复计算。英文解释可以参见: https://wiki.python.org/moin/PythonDecoratorLibrary#CA-7f0e99ea942ab4cfe29...原创 2018-06-01 10:56:51 · 4216 阅读 · 1 评论 -
各种排序算法详解与运行时间比较---Java
有一天与室友聊天,他说自己用了冒泡排序算法来比较两个类,几年前了解过,但我现在突然不知道什么是冒泡排序了,于是准备再简单看看。1. 冒泡排序(Bubble sort)冒泡排序是最直觉的比较算法了,它的思想是: 将相邻的元素两两比较,若顺序不对则交换顺序,直到没有需要交换的数对为止。 举例:排序 (5 1 4 2) 第一轮: (5 1 4 2) →→\rightarrow (1 5 ...原创 2018-07-20 21:28:46 · 3338 阅读 · 0 评论