算法导论
我不搞基
爱学习,爱生活
展开
-
算法导论作业2.1
2.1-2伪代码for j=2 to A.length: key=A[j] i=j-1 while j>0 and A[i]<key: A[i+1]=A[i] i=i-1 A[i+1]=key2.1-3题中未提查找出所有与v相等的值,所以如下伪代码也合理for i=1 to A.length v=NIL if A[i]==v: print i b...原创 2019-05-09 19:59:44 · 343 阅读 · 0 评论 -
快速排序与其性能分析
快速排序的描述 快速排序是采用的分治策略原创 2019-06-27 15:05:17 · 771 阅读 · 0 评论 -
堆排序的时间复杂度
1 引言 网上对堆排序都已经讲得很清楚,唯一不清楚的部分是运行时间即时间复杂度的分析,因此本篇博客通过《算法导论》里面堆排序的内容,详细讲解堆排序的时间复杂度。2 堆排序 堆是一个完全二叉树,任意一节点的值大于子节点的值称为大根堆,任意一节点的值小于子节点的值称为小根堆。一般来说,堆可以用一个一维数组A[n]A[n]A[n]表示。2.1 基本操作2.1.1 获取父、子节点 由于堆...原创 2019-06-17 19:17:49 · 11294 阅读 · 0 评论 -
分治策略
多项式大于、小于多项式大于: 若f(n)f(n)f(n)多项式大于g(n)g(n)g(n),则:∃e>0,n0,使得当n>n0,有f(n)>g(n)ne\exist e>0,n_0,使得当n>n_0,有f(n)>g(n)n^e∃e>0,n0,使得当n>n0,有f(n)>g(n)ne多项式小...原创 2019-06-13 17:02:47 · 2335 阅读 · 0 评论 -
渐进标记
3.2-1此题含有三个命题,分别是:1、若f(n)f(n)f(n)和g(n)g(n)g(n)是单调递增的函数,则函数f(n)+g(n)f(n)+g(n)f(n)+g(n)也是单调递增的;2、若f(n)f(n)f(n)和g(n)g(n)g(n)是单调递增的函数,则函数f(g(n))f(g(n))f(g(n))也是单调递增的;3、若f(n)f(n)f(n)和g(n)g(n)g(n)是单调递增的...原创 2019-06-02 12:20:49 · 736 阅读 · 0 评论 -
算法导论作业第二章思考题
2-1在归并排序中对小数组采用插入排序2-22-32-4原创 2019-05-17 16:14:28 · 267 阅读 · 0 评论 -
算法导论作业3.1
3.1-1证明:原问题可转化为如下两个情况:1、当n>n0n>n_0n>n0时,f(n)>g(n)f(n)>g(n)f(n)>g(n),有f(n)=θ(f(n)+g(n))f(n)=\theta(f(n)+g(n))f(n)=θ(f(n)+g(n))成立;2、当n>n0n>n_0n>n0...原创 2019-05-22 19:14:42 · 236 阅读 · 0 评论 -
算法导论作业2.2
2.2-1θ(x3)θ(x^3)θ(x3)2.2-2算法过程:从A[1~n]中找比A[1]小的与A[1]交换从A[2~n]中找比A[2]小的与A[2]交换…从A[n-1,n]中找比A[n-1]小的与A[n-1]交换第一个问题该算法的循环不变式...原创 2019-05-13 15:39:56 · 350 阅读 · 0 评论 -
算法导论作业2.3
2.3-13,9,26,28,41,49,52,573,26,41,529,38,49,573,4126,5238,579,49341522638579492.3-2MERGE(A,p,q,r)n1=q-p+1n2=r-qlet L[1..n1+1] and R[1..n2+1] be new arrarysfor i=1 to n1 L[i]=A[p+i-1]for j=1 t...原创 2019-05-15 14:54:39 · 260 阅读 · 0 评论 -
线性时间排序
前言 之前提到的排序算法有归并排序、堆排序、快速排序、插入排序,这些排序都是基于比较的,因此称这类排序为比较排序。比较排序的下界为Ω(nlgn)\Omega(nlgn)Ω(nlgn),其中快速排序、堆排序、归并排序都可以达到这个时间性能。在本篇博客,将介绍几个线性时间排序算法,线性时间排序算法指的是排序nnn个元素使用的时间为Θ(n)\Theta(n)Θ(n)。计数排序 计数排序的伪代码...原创 2019-07-06 20:48:58 · 1012 阅读 · 0 评论