![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
liuyuhang13
这个作者很懒,什么都没留下…
展开
-
主元素问题
主元素问题判断n个元素的数组A中是否有某个元素出现超过⌊n/2⌋\lfloor n/2\rfloor次,请写出伪代码以及分析时间复杂度算法1(大一程设):比较每一元素,为每一个元素计数,Θ(n2)\Theta(\rm{n^2}) 算法2(大二数据结构):排序,一次扫描计数,Θ(nlogn)\Theta(\rm nlogn)算法3(算法课):分治,分两段分别找,合并时扫描计数,Θ(nlogn)\The原创 2017-12-26 19:58:19 · 257 阅读 · 0 评论 -
循环不变式与插入排序
排序问题 输入:n个数<a1,a2,...,an><a_1,a_2,...,a_n> 输出:输入序列的一个排列(重新排序)<a′1,a′2,...,a′n><a'_1,a'_2,...,a'_n>,使得a′1≤a′2≤...≤a′na'_1\leq a'_2\leq ...\leq a'_n插入排序伪代码 INSORTION-SORT(A) for j <-- 2 to length[A]原创 2017-12-27 14:00:40 · 236 阅读 · 0 评论 -
分治法与归并排序
分治法分治模式 分解: 原问题为若干字问题,这些子问题是原问题的规模较小的实例。 解决: 这些子问题,递归地求解各子问题。然而,若子问题的规模足够小,则直接求解。 合并: 这些子问题的解成原问题的解。 归并排序操作如下 分解: 分解待排序的那个元素的序列成各具n/2个元素的两个子序列。 解决: 使用归并排序递归地排序两个子序列。 合并: 合并两个已排序的子序列以产生排序的答案。 MERGE_SORT原创 2017-12-27 16:41:35 · 160 阅读 · 0 评论 -
快速排序
最坏情况Θ(n2)\Theta(n^2),但通常是实际排序应用中最好的选择,因为平均性能非常好,期望时间复杂度为Θ(nlgn)\Theta(n\lg n),而且隐含的常数因子非常小。另外,还能够进行原址排序,甚至在虚存环境中很好地工作。快速排序的描述-分解: 数组A[p..r]被划分为两个(可能为空)子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]中的每一个元素都是小于等于A[q原创 2017-12-27 17:15:32 · 101 阅读 · 0 评论