注:本文所指归并排序指 二路归并排序。 归并排序是平均情况、最坏情况、最好情况时间复杂度都为O(Nlog2N)的稳定的排序算法。最近梳理了下归并排序的递归、非递归、以及自然归并排序算法。 归并排序的基础:将两个有序数组合并为一个有序数组,需要O(n)的辅助空间。 图片来自:https://www.c ...
分类:
编程语言 时间:
2018-05-29 01:48:27
阅读次数:
218
顺序表的查找技术 假设有一组书8,5,9,80,16,5,56。。。。如何查找我们的value? 一般为 看第一个for循环中每次都需要判断一次i<size,那我们遍历100个数最坏情况下其实是比较了200次。 于是我们设定一个哨兵在a[0],然后while循环从后往前比较,加入比较到就返回i,否则 ...
分类:
其他好文 时间:
2018-05-23 14:21:28
阅读次数:
155
基本概念 快速排序是非常流行、应用非常广泛的排序算法,而且实现简单,适用于各种不同的输入数据,在一般应用中比其他排序算法都要快很多。快速排序是基于分治思想的原地排序的排序算法,将长度为N的数组排序所需时间和NlgN成正比,而且内循环比大多数排序算法都要短小和简单,因此一般情况比其他排序算法效率高。它 ...
分类:
编程语言 时间:
2018-05-22 22:27:37
阅读次数:
248
这题有人用毒瘤的高斯消元做,也有人DFS,BFS,还有人证明性质然后直接计算,而我选择了最暴力的方法: 2^16枚举! 一算复杂度发现最坏情况是65536×16×4,无压力...... 秒A 1 #include <cstdio> 2 using namespace std; 3 4 bool a[ ...
分类:
其他好文 时间:
2018-05-10 14:20:25
阅读次数:
159
单调栈 单调栈是解决这样一类问题 给出$n$个数,问每一个数向左第一个比它小的数是谁 如果直接暴力的话,最坏情况下肯定是$O(n^2)$的,但是单调栈可以在$O(n)$的时间内解决这类问题 实现 单调栈,顾明思议嘛,就是维护一个具有单调性的栈,至于是单调递增还是单调递减,这个视题目而定 对于上面那个 ...
分类:
其他好文 时间:
2018-04-27 22:08:49
阅读次数:
134
简要:Bellman-Ford算法计算的仍然是从一个点到其他所有点的最短路径算法,其时间复杂度是O(NE),N表示点数,E表示边数,不难看出,当一个图稍微稠密一点,边的数量会超过点数那么实际上效率是低于Dijkstra算法的。但是本算法可以计算存在负权边的情况(不存在负回路),因此可以用于更广泛的情 ...
分类:
编程语言 时间:
2018-04-18 23:41:23
阅读次数:
231
算法描述 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 算法复杂度 如果目标是把n个元素的序列升序排列,那么采用插入排序存在最好情况和最坏情况。最好情况就是,序列已经是升序排列了,在这种情况下,需要进行的比较操作需{\displaystyle n-1}次即可。最坏情况就是 ...
分类:
编程语言 时间:
2018-04-09 21:04:40
阅读次数:
146
像归并排序一样,快速排序也使用分治模式(因此也是用递归) 1.1快排与归并的区别: 快速排序按照原址工作,快速排序渐进运行时间介于最坏情况和平均情况之间。尤其是快排的最坏运行时间是θ(n^2), 但是他的平均情况下的运行时间要更好一些。快速排序也有好的常数因子(比归并排序要好一点),并且它通常是实践 ...
分类:
编程语言 时间:
2018-04-08 10:49:34
阅读次数:
240
原文链接:https://www.cnblogs.com/jbelial/articles/2116074.html P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 ...
分类:
其他好文 时间:
2018-04-01 23:01:53
阅读次数:
172
算法简介 冒泡排序(Bubble Sort)是一种典型的交换排序算法,持续比较相邻元素,大的挪到后面,因此大的会逐步往后挪,故称之为冒泡。 算法描述 比较相邻的元素。如果第一个比第二个大(小),就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大 ...
分类:
编程语言 时间:
2018-03-26 22:34:51
阅读次数:
328