自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 数据整理(习题解答)

数据整理课程链接:数据整理 · the missing semester of your cs education (missing-semester-cn.github.io)文章目录数据整理正则表达式回到数据整理awk -- 另外一种编辑器分析数据利用数据整理来确定参数整理二进制数据课后练习您是否曾经有过这样的需求,将某种格式存储的数据转换成另外一种格式? 肯定有过,对吧!这也正是我们这节课所要讲授的主要内容。具体来讲,我们需要不断地对数据进行处理,直到得到我们想要的最终结果。在之前的课程

2021-03-01 22:01:03 799 1

原创 编辑器(Vim)(习题解答)

编辑器(Vim)课程链接:编辑器 (Vim) · the missing semester of your cs education (missing-semester-cn.github.io)文章目录编辑器(Vim)该学哪个编辑器?VimVim的哲学编辑模式基本操作插入文本缓存, 标签页, 窗口命令行Vim 的接口其实是一种编程语言移动选择编辑计数修饰语演示自定义 Vim扩展 Vim其他程序的 Vim 模式ShellReadline其他Vim 进阶搜索和替换多窗口宏扩展资料课后练习写作和写代码

2021-03-01 22:00:27 1758

原创 Shell 工具和脚本(习题解答)

Shell 工具和脚本课程链接:Shell 工具和脚本 · the missing semester of your cs education (missing-semester-cn.github.io)文章目录Shell 工具和脚本Shell 脚本Shell 工具查看命令如何使用查找文件查找代码查找 shell 命令文件夹导航课后练习Shell 脚本到目前为止,我们已经学习来如何在shell中执行命令,并使用管道将命令组合使用。但是,很多情况下我们需要执行一系列的操作并使用条件或循环这样的控

2021-03-01 21:59:57 1146

原创 CM2 线性结构之一:线性表

CM2 线性结构之一:线性表文章目录CM2 线性结构之一:线性表数据元素集(D)逻辑结构(L)基本操作(O)相关操作顺序存储结构链式存储结构数据元素集(D)n个相同类型数据元素的有限序列(a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​)逻辑结构(L)由下标i决定首元素、尾元素、前驱、后继算法的设计取决于逻辑结构基本操作(O)初始化ListInit(L)销毁ListDestory(L)引用型操作ListLength(L), Li

2020-07-18 11:27:20 210

原创 课程概览与 shell (习题解答)

文章目录1/13 课程概览与 shell主题1:The Shell使用 shell在shell中导航在程序间创建连接一个功能全面又强大的工具课后练习1/13 课程概览与 shell主题1:The Shell为了充分利用计算机的能力,我们不得不回到最根本的方式,使用文字接口:Shell使用 shell输入命令data 执行程序,也可以带参数如echo hello那么 shell 是去哪里寻找 date 或 echo 的呢?当我们执行 echo 命令时,shell了解到需要执行 echo 这个程

2020-07-17 17:59:04 1932

原创 CM1 : 程序设计与算法导论

迷宫 = 数据结构+算法

2020-07-13 15:33:55 212

原创 线性习题1.什么是抽象的链表

抽象的链表(Reversing Linked List)有块地方存数据有块地方存志指针——下一个结点的地址SampleInput00100400000999990010012309利用结构数组,下标表示地址单链表的逆转Ptr Reverse( Ptr head, int K ){ cnt = 1; new = head-&...

2020-03-02 10:34:29 613

原创 图之习题选讲:旅游规划

旅游规划题意理解城市为结点公路为边权重1:距离权重2:收费核心算法void Dijkstra( Vertes s ){ while(1) { V = 未收录顶点中dist最小者; if( 这样的V不存在 ) break; collected[V] = true; for( V的...

2020-03-02 10:33:58 244

原创 树之习题选讲

Tree traversals again非递归中序遍历Push的顺序为先序遍历Pop的顺序给出中序遍历核心算法void solve( int preL, int inL, int postL, int n ){ // preL:pre的首地址 // inL:in的首地址 // postL:post的首地址 // n:数据规...

2020-03-02 10:33:33 184

原创 11.5应用实例:文件中单词词频统计

文件中单词词频统计用散列表进行快速地查找和插入int main(){ int TableSize = 10000; //散列表的估计大小 int wordcount = 0, length; HashTable H; ElementType word; FILE *fp; char document[30] = "HarryPotter.t...

2020-03-02 10:30:56 498

原创 11.4散列表的性能分析

散列表的性能分析平均查找长度(ASL)用来度量散列表查找效率:成功、不成功关键词的比较次数多少,取决于产生冲突的多少影响产生冲突多少有以下三个因素:散列函数是否均匀;处理冲突二点方法;散列表的装填因子α\alphaα.分析:不同冲突处理方法、装填因子对效率的影响线性探测法的查找性能平方探测法和双散列探测法的查找性能期望探测次数与装填因子α\alphaα...

2020-03-02 10:30:24 529

原创 11.3冲突处理方法

冲突处理方法常见处理冲突的思路:换个位置:开放地址法同一位置的冲突对象组织在一起:链地址法开放定址法(Open Addressing)一旦产生了冲突(该地址已有其他元素),就按某种规则去寻找另一空地址hi(key)=(h(key)+di)mod TableSizeh_i(key)=(h(key)+d_i)mod \space TableSizehi​(key)=(h...

2020-03-02 10:29:51 276

原创 11.2散列函数的构造方法

散列函数的构造方法一个好的散列函数一般应考虑下列两个因素:计算简单,以便提高转换速度关键词对应的地址空间分布均匀,以尽量减少冲突 。数字关键词的散列函数构造直接定址法除留余数法(p一般取素数)数字分析法分析数字关键字在各位上的变化情况,取比较随机的位作为散列地址比如:取手机号号码的后4位折叠法平方取中法字符关键词的散列构造ASCII码加...

2020-03-02 10:29:21 183

原创 11.1散列表

散列表已知的几种查找方法:顺序查找 O(N)二分查找(静态查找) O(log2N)O(log_2N)O(log2​N)二叉搜索树、平衡二叉树 O(h)、O(log2N)O(h)、O(log_2N)O(h)、O(log2​N)还有其他方法吗?二分法十亿用户:30次、1T连续空间按有效QQ号大小有序存储:在连续存储空间中,插入和删除一个...

2020-03-02 10:28:57 172

原创 10.4排序算法的比较

排序算法的比较

2020-03-02 10:28:14 147

原创 10.3基数排序

基数排序桶排序假设有N个学生,它们的成绩是0到100之间的整数(于是有M=101个不同的成绩值)。如何在线性时间内将学生按成绩排序?N>>Mvoid Bucket_Sort(ElementType A[], int N){ count[]初始化; while(读入1个学生的成绩grade) 将该生插入count[grade]链表; ...

2020-02-22 22:24:51 321

原创 10.2表排序

表排序算法概述间接排序定义一个指针数组作为“表”(table)如果仅要求按顺序输出,则输出:A[table[0]],A[table[1]],A[table[2]],…物理排序N个数字的排序由若干个独立的环组成如何判断一个环结束每访问一个空位i后,就令table[i]=i。当发现table[i]==i时,环就结束了。复杂度分析最好情况:初始即有序...

2020-02-22 22:24:26 123

原创 10.1快速排序

快速排序算法概述分而治之void Quicksort( ElementType A[], int N ){ if( N<2 ) return; pivot = 从A[]中选一个主元; 将S = { A[]\pivot } 分成2个独立子集: A1={ a∈S | a<=pivot } 和 A2={ a∈S | a<=p...

2020-02-22 22:22:12 186

原创 9.4归并排序

归并排序核心:有序子列的归并如果两个子列一共有N个元素,则归并的时间复杂度T(N) = O(N)// L = 左边起始位置, R = 右边起始位置, RightEnd = 右边终点位置void Merge( ElementType A[], ElementType TmpA[], int L, int R, int RightEnd ){ LeftEnd = R - 1; /...

2020-02-22 22:21:38 142

原创 9.3堆排序

选择排序void Selection_Sort( ElementType A[], int N ){ for( i=0; i<N; i++ ) { MinPosition = ScanForMin( A, i, N-1 ); //从A[i]到A[N-1]中找到最小元,并将其位置赋给MinPosition Swap( A[i], A[...

2020-02-22 22:21:02 223

原创 9.2希尔排序

希尔排序void Shell_sort( ElementType A[], int N ){ for( D=N/2; D>0; D/=2 ){// 希尔增量序列 for( P=D; P<N; P++ ) {//插入序列 Tmp = A[P]; for( i=P; i>=D && A[i-D...

2020-02-22 22:20:31 117

原创 9.1简单排序(冒泡,插入)

简单·排序前提函数头void X_sort ( ElementType A[], int N )大多数情况下,为简单起见,讨论从小到大的整数排序N是正整数只讨论基于比较的排序(> = <有定义)只讨论内部排序稳定性:任意两个相等的数据,排序前后的相对位置不发生改变没有一种排序是任何情况下都表现最好的冒泡排序void Bubble_Sort( Element...

2020-02-22 22:20:00 312

原创 8.2拓扑排序

拓扑排序例:计算机专业排课AOV(Activity On Vertex)拓扑序:如果图中从V到W有一条有向路径,则V一定排在W之前。满足此条件的顶点序列成为一个拓扑序获得一个拓扑序的过程就是拓扑排序AOV如果有合理的拓扑序,则必定是有向无环图(Directed Acyclic Graph, DAG)算法(利用入、出度判断是否有预修)void TopSort(){ for...

2020-02-22 22:19:20 248

原创 8.1最小生成树问题

最小生成树问题什么是最小生成树是一棵树无回路|V|个顶点一定有|V|-1条边是生成树包含全部顶点|V|-1条边都在图里边的权重和最小向生成树中任加一条边,都一定构成回路贪心算法什么是“贪”:每一步都要最好的什么是“好”:权重最小的边需要约束:只能用图里有的边只能正好用掉|V|-1条边不能有回路Prim算法—让一棵小树长大void Pri...

2020-02-22 22:17:59 266

原创 7.1最短路径问题

最短路径问题的抽象在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径这条路径就是两点之间的最短路径第一个顶点为源点最后一个顶点为终点问题分类单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径(有向)无权图(有向)有权图多源最短路径问题:求任意两顶点间的最短路径无权图的单源最短路算法按照递增(非递减)的顺序找到到各个顶点的...

2020-02-11 13:16:12 582

原创 6.4应用实例:六度空间

六度空间你和任何一个陌生人之间所间隔的人不会超过六个算法思路对节点进行广度优先搜索搜索过程中累计访问的节点数需要记录“层数”,仅计算6层以内的节点数void SDS(){ for( each V in G ){ count = BFS(V); Output(count/N); }}int BFS(){ visite...

2020-02-11 13:15:46 746

原创 6.3应用实例:拯救007

应用实例:拯救007总体算法void Save007 ( Graph G ){ for( each V in G ){ if( !visited[V] && FirstJump(V) ) { answer = DFS( V ); if( answer == YES ) break; }...

2020-02-11 12:59:33 423

原创 6.2图的遍历

图的遍历深度优先搜索(DFS)类似树的先序遍历void DFS( Vertex V ){ visited[ V ] = true; for( V 的每个邻接点 W ) if( !Visited[W]) DFS(W);}若有N个结点,E条边,时间复杂度是:用邻接表存储图,有O(N+E)用邻接矩阵存储图,有O(N^2)广度优...

2020-02-11 12:59:01 155

原创 6.1什么是图

什么是图表示“多对多”的关系包含一组顶点:通常用V(Vertex)表示顶点集合一组边:通常用E(Edge)表示边的集合边是顶点对有向边不考虑重边和子回路抽象数据类型类型名称:图(Gragh)数据对象集:G(V,E)由一个非空的有限顶点集合V和一个优先边集合E组成操作集:对于任意图G,以及v,eGragh Create():建立空图并返回空图Graph ...

2020-02-11 12:58:38 206

原创 5.3集合及运算

集合的表示集合运算:交、并、补、差,判定一个元素是否属于某一集合并查集:集合并、查某元素属于什么集合并查集问题中集合存储如何实现?可以用树结构表示集合,树的每个节点代表一个集合元素(双亲表示法)结构数组存储typedef struct { ElementType Data; int Parent;} SetType;集合运算查找某...

2020-02-11 12:57:56 185

原创 5.2哈夫曼树与哈夫曼编码

哈夫曼树与哈夫曼编码什么是哈夫曼树判定树考虑学生成绩的分布的概率查找效率修改判定树根据结点不同的查找概率构造更有效的搜索树哈夫曼树的定义带权路径长度(WPL):设二叉树有n个叶子节点,每个叶子节点带有权值WkW_kWk​,从根结点到每个叶子结点的长度为IkI_kIk​,则每个叶子结点的带权路径长度之和就是:WPL=∑k=1nwklkWPL=\sum_{k=1} ^n...

2020-02-11 12:51:05 283

原创 5.1堆(heap)

堆(heap)什么是堆?优先队列(Priority Queue) : 特殊的“队列”,取出的元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。操作:插入,删除优先队列的完全二叉树表示堆的两个特性结构性:用数组表示的完全二叉树有序性:任一结点的关键字是其子树所有结点的最大值(或最小值)最大堆,也称大顶堆:最大值最小堆,也称小顶堆:最小值...

2020-02-11 12:50:42 137

原创 4.2 平衡二叉树

4.2 平衡二叉树什么是平衡二叉树?例:搜索树节点不同插入次序,将导致不同的深度和平均查找长度ASL“平衡因子”(Balance Factor,简称BF): BF(T) = hL - hR, 其中hL和hR反别为T的左右子树的高度。平衡二叉树(Balance Binary Tree)(AVL树)​ 空树,或者​ 任一结点左、右子树高度差的绝对值不超过1, 即|BF(T)|<=...

2020-02-11 12:50:01 304

原创 4.1二叉搜索树

二叉搜索树查找问题静态查找和动态查找针对动态查找,数据如何组织?二叉搜索树的性质非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。二叉搜索树的特别函数Position Find( ElementType X, BinTree BST )Position FindMin( BinTree BST )Positio...

2020-02-11 12:49:23 297

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除