读书笔记
mahaoyuan2015
这个作者很懒,什么都没留下…
展开
-
【算法导论】2.3-7
【算法导论】2.3-7给定n个元素的集合S和一个x,判断是否存在两个元素属于S,且他们的和为x,要求时间复杂度ΘΘΘ(nlgn)。首先归并排序,时间复杂度ΘΘΘ(nlgn)然后设置两个标兵从最小处和最大处相向前行,每次计算两元素和,若等于x,停止;若小于x,小标兵前进;若大于x,大标兵后退。直到两标兵相遇,或找到和为x的两元素。时间复杂度ΘΘΘ(n)则总时间复杂度为ΘΘΘ(nlgn)。...原创 2018-10-31 16:38:14 · 448 阅读 · 0 评论 -
【算法导论】9.1~9.2
顺序统计量对于一个集合(数组)最大值或最小值可以在n−1n-1n−1次比较内求得,即每次比较更新当前最小(大)值。若要同时求最大和最小值,可一对一对的比较,用较大的和maxmaxmax比较,较小的和minminmin比较选择问题:在一个集合内求第iii小的元素。采用分治算法:代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h...原创 2018-11-20 17:52:45 · 628 阅读 · 0 评论 -
【算法导论】8.1~8.4
本文转载于:https://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是O(n)。这些排序因为其待排序元素本身就含有了定位特征,因而不需要比较就可以确定其前后位置,从而可以突破比较排序算法时间复杂度O(nlgn)的理论下限。计数排序(Counting sort...转载 2018-11-15 23:05:41 · 684 阅读 · 0 评论 -
【算法导论】6.1~6.5
堆排序时间复杂度:Θ(nlgn)Θ(nlgn)Θ(nlgn)代码:#define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt;/*向下调整以维持最大堆的性质*/void siftdown(int a[], int x, int n){ int l, r, max, t; while (x &lt;= n / 2) { l ...原创 2018-11-08 16:41:04 · 205 阅读 · 0 评论 -
【算法导论】7
快速排序代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int partition(int a[], int p, int r){ int t, i, j; /*随机化 int x = p + (rand() % (r - p)); t = a[r]; a[r] ...原创 2018-11-11 17:50:15 · 86 阅读 · 0 评论 -
【算法导论】4.2
矩阵乘法的 Strassen 算法朴素算法时间复杂度:Θ(n3)Θ(n^3)Θ(n3);一般分治算法:(1)A=[A11A12A21A23]&amp;nbsp;&amp;nbsp;B=[B11B12B21B23]&amp;nbsp;&amp;nbsp;C=[C11C12C21C23]A=\left[ \begin{matrix} A_{11} &amp;amp;amp; A_{12} \\ A_{21}原创 2018-11-06 00:48:52 · 272 阅读 · 0 评论 -
【算法导论】4.1-5
最大子数组和的线性时间算法线性算法通过迭代求解:先做以下规定:A[i...j]A[i...j]A[i...j]表示a[i...j]a[i...j]a[i...j]的最大子数组和。P[j]P[j]P[j]表示a[1...j]a[1...j]a[1...j]中包括a[j]a[j]a[j]的最大子数组和则:A[1...j]=max(A[1...j],a[j],P[j]+a[j])A[1...原创 2018-11-04 21:52:49 · 1136 阅读 · 0 评论 -
【算法导论】5.3
随机算法介绍两种将输入随机化的方法:随机排列数组设A[1...n]A[1...n]A[1...n]为原始输入。生成一个新数组P[1...n]P[1...n]P[1...n],其中Pi=random(1,n3)。P_i=random(1,n^3)。Pi=random(1,n3)。以PPP为基准对AAA进行排序。原址排列数组for i=1 to nsw...原创 2018-11-06 22:17:10 · 199 阅读 · 0 评论 -
【算法导论】2.1~2.3
【算法导论】2.1~2.3(排序,分治)插入排序,用文中的列子 整理扑克牌 可以非常清晰地描述该算法。效率为 n² 伪代码如下:1 for j=2 to A.length2 key=A[j]3 i:=j-14 while i&gt;0 and A[i]&gt;key5 A[i+1]=A[i]6 ...原创 2018-10-30 23:21:44 · 166 阅读 · 0 评论 -
【算法导论】4.0~4.1
分治策略4.0分治策略用递归的方式求解问题,每层递归包括下面三个基本步骤:分解: 将问题分解成若干个子问题,子问题形式与原问题相同,但规模较小。解决: 递归地求解子问题,若子问题规模足够小,则停止递归,直接求解。合并; 将子问题的解合并成原问题的解。递归式的三种求解方法:代入法: 猜测+数学归纳法证明。递归树法: 将递归式转换为一棵树,节点表示递归调用产生的代价。然后用边界...原创 2018-10-31 22:06:26 · 154 阅读 · 0 评论 -
【算法导论】3.1~3.2
ΘΘΘ记号:渐近紧确界OOO记号:渐近上界ΩΩΩ记号:渐近下界ooo记号:非渐近紧确的上界ωωω记号:非渐近紧确的下界原创 2018-10-31 19:42:50 · 434 阅读 · 0 评论 -
【数据结构与算法分析】3.27
多重表P.S. 每个结点包括四个域:于该结点关联的学生编号与该节点关联的班级编号该节点的下一个学生结点该节点的下一个班级结点模拟代码如下:/*输入:第一行为学生数量n,之后有n组数据第i组数据包括两行第一行表示学生i选了x门课程第二行有x个数,表示该学生所选课程编号。输出:输出每个班级注册的学生编号若某班级无学生注册则不输出*/#define _CRT_S...原创 2018-11-20 21:13:19 · 231 阅读 · 0 评论