算法
wenfh2020
个人博客 - wenfh2020.com
展开
-
lru c++ 实现
LRU(Least recently used,最近最少使用),数据插入队列中,经常访问的数据单元靠近列表头部,不经常访问的靠近列表尾部。列表数据就像按照时间排序一样。常用来淘汰一些长时间不使用的数据。算法流程lru 算法用一个列表也可以实现。只是列表数据需要更新操作,那得先查找数据,列表的查找时间复杂度是 O(n)O(n)O(n),这是个低效的操作,所以用时间复杂度为 $ O(1) $ 的...原创 2020-03-19 17:20:01 · 679 阅读 · 0 评论 -
[算法导论]归并排序
时间复杂度《算法导论》2.3.1 分治法。归并排序采用了分治法的递归排序。分治法:分解子问题,解决子问题,合并子结果。分解:分解待排序的 nnn 个元素的序列各成 n2\frac{n}{2}2n 个元素的子列。解决:使用归并排序递å归地排序两个子序列。合并:合并两个已排序的子序列以产生已排序的答案。因为排序数组会被 n2\frac{n}{2}2n 拆开,归并排序时间复杂度稳定的...原创 2019-11-29 13:54:27 · 349 阅读 · 0 评论 -
[算法导论]快速排序学习
基础看懂《算法导论》需要重温数学知识。算法实现和推导是一个数学建模过程。原理对于包含 n 个数的输入数组来说,快速排序是一种最坏情况时间复杂度为 O(n2n^2n2) 的排序算法。虽然最坏情况的时间复杂度很差,但是快排通常是实际排序应用中最好的选择,因为它平均性能非常好,它的期望实际复杂度是O(nlgnnlgnnlgn),而且O(nlgnnlgnnlgn)中隐含的常数因子非常小,另外它还能...原创 2019-11-21 21:26:08 · 296 阅读 · 0 评论 -
C/C++ 实现快速排序和二分查找
温故而知新,原理就不说了,下面是实现的代码片段,整体放在 github 上了。快排实现:// 左边比 key 大的要置换到右边,右边比左边小的要置换到左边。void QuickSort(int szArray[], int iStart, int iEnd) { if (iStart >= iEnd) { return; } int iH...原创 2018-07-27 13:45:52 · 332 阅读 · 0 评论