11 2021 档案

递归算法时间复杂度
摘要:1:代入 【举 例】我们有如下的递归问题:T(n)=4T(n/2)+O(n) 我们首先预测时间复杂度为O(n2),不妨设T(n)=kn^2(其中k为常数),将该结果带入方程中可得:左=kn^2,右=4k(n/2)2+O(n)=kn^2+O(n) 由于n^2的阶高于n的阶,因而左右两边是相等的,接下来 阅读全文

posted @ 2021-11-10 16:03 Y-flower 阅读(3962) 评论(0) 推荐(0) 编辑

最短路径问题-Floyd算法
摘要:具体步骤和图解看这个:https://www.cnblogs.com/ssyfj/p/9495960.html 一看这个就懂了-傻子也能看懂的弗洛伊德算法:https://www.cnblogs.com/wangyuliang/p/9216365.html 知识点: 1)Floyd算法适用于APSP 阅读全文

posted @ 2021-11-10 10:47 Y-flower 阅读(883) 评论(0) 推荐(0) 编辑

最短路径问题-Dijkstra算法
摘要:有权单源最短路径问题 具体思路和图解看这个-https://www.cnblogs.com/ssyfj/p/9491895.html 知识点: 1)权值不可为负 2)Dijkstra算法解决了从某个顶点到其余各顶点的最短路径。其时间复杂度是O(n*2) 更详细的图解(一看就懂!!!):https:/ 阅读全文

posted @ 2021-11-10 10:33 Y-flower 阅读(218) 评论(0) 推荐(0) 编辑

数据操作-Search(查找)
摘要:1. 顺序查找-O(N) 线性表;无序查找 等概率条件下...平均查找长度:ASL = (n+....+2+1)/n= (n+1)/2。2. 二分查找-O(logN) 线性表;有序查找;mid=low+0.5*(high-low) 在等概率条件下...平均查找长度:ASL =(1/n)* ( j * 阅读全文

posted @ 2021-11-09 15:14 Y-flower 阅读(483) 评论(0) 推荐(0) 编辑

数据操作-Sort(排序)
摘要:插入排序(基于比较的排序算法) 1.直接插入(性能要比冒泡和简单选择排序好些) 2.折半插入 (直接插入改进版) 3.希尔排序 交换排序 1.冒泡排序 2.快速排序 选择排序 1.简单选择 2.堆排序 插入删除 归并排序 1.归并排序 小总结: (一)经过一趟排序,能够保证一个关键字达到最终位置,这 阅读全文

posted @ 2021-11-09 11:05 Y-flower 阅读(245) 评论(0) 推荐(0) 编辑

非线性表-Graph(图-待完善)
摘要:1:图的知识点 关于连通子图 1)极小连通子图与极大连通子图是在无向图中进行讨论的 2)极大强连通子图是在有向图中进行讨论的 极大连通子图:1.连通图只有一个极大连通子图,就是它本身。(是唯一的)2.非连通图有多个极大连通子图。(非连通图的极大连通子图叫做连通分量,每个分量都是一个连通图)3.称为极 阅读全文

posted @ 2021-11-04 11:14 Y-flower 阅读(348) 评论(0) 推荐(0) 编辑

非线性表-BiTree(二叉树练习题-没事多看看)
摘要:1:判断是否为平衡二叉树 int depth(bitTree T) { if(!T) return 0; else return max(depth(T->lchild),depth(T->rchild))+1; //这有个缺点,空树会返回深度1 } //判断平衡二叉树 int balance(bi 阅读全文

posted @ 2021-11-04 10:53 Y-flower 阅读(105) 评论(0) 推荐(0) 编辑

非线性表-BiTree(特殊二叉树-需记忆!!!!难啊难)
摘要:1:哈夫曼树-wpl最小-最优二叉树 1.没有度为1的结点 2.n个叶子节点的哈夫曼树共有2n-1个结点 树的特点:度为2结点和叶结点的关系n2=n0-1 所以:当叶结点为n时,度为二的结点数为n-1 因为哈夫曼没有度为一的结点,所以一共在树中有2n-1个结点 3.哈夫曼树任意非叶结点的左右子树交换 阅读全文

posted @ 2021-11-04 10:18 Y-flower 阅读(329) 评论(0) 推荐(0) 编辑

非线性表-BiTree(二叉树)
摘要:1.Status InitBiTree(BiTree *T) 构造空二叉树 2.Status DestroyBiTree(BiTree *T) 销毁二叉树,前提T存在 3.Status CreateBiTree(BiTree *T) 用先序遍历创建二叉树 4.Status ClearBiTree(B 阅读全文

posted @ 2021-11-04 09:54 Y-flower 阅读(1678) 评论(0) 推荐(0) 编辑

字符串-模式匹配算法
摘要:1:BF(brute-force)模式匹配 int Index(char S[],int pos,char T[]) { int i=pos;//主串开始位置 int j=1; while(i<=strlen(S)&&j<=strlen(T)) { if(S[i]==T[j]) { i++; j++ 阅读全文

posted @ 2021-11-03 17:04 Y-flower 阅读(185) 评论(0) 推荐(0) 编辑

线性表(特殊)-栈和队列练习题
摘要:1:算数表达式包含(),{},[]编写算法判断表达式括号是否配对,以'\0'作为算术表达式结束符 用栈 void ismatch(char *str) { stack s; init(s);//初始化栈 int i=0;while(str[i]!='\0') { //(2+4)+{(4+{7+8+( 阅读全文

posted @ 2021-11-03 17:01 Y-flower 阅读(67) 评论(0) 推荐(0) 编辑

线性表(特殊)-Stack(栈)
摘要:1:顺序栈-数组 2:链栈 #define initSize 20 typedef struct stackNode { int data; int lenth; struct stackNode *next; }linkStack; 定义操作初始化栈 int initStack(linkStack 阅读全文

posted @ 2021-11-03 16:40 Y-flower 阅读(38) 评论(0) 推荐(0) 编辑

线性表(特殊)-Queen(队列)
摘要:typedef struct Qnode{ int elem; struct Qnode *next; }Qnode; typedef struct queueList{ struct Qnode *head;//队列的头指针 struct Qnode *end;//队列的尾指针 }queueLis 阅读全文

posted @ 2021-11-03 16:30 Y-flower 阅读(84) 评论(0) 推荐(0) 编辑

结构体-练习题
摘要:1:输入若干人员姓名电话,义字符“#”表示结束,输入姓名,查找该人电话 scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。scanf()可以读取所有类型的变量 gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'. 阅读全文

posted @ 2021-11-03 16:18 Y-flower 阅读(183) 评论(0) 推荐(0) 编辑

共用体-练习题
摘要:1:读入N个职工数据,每个职工包括编号,姓名,类型(t/g)若为干部要输入级别,若为教师,输入系别,职称,最后输出这些数据 #define N 10 struct { int no; char name[10]; char type[10]; union body { int level;//干部 阅读全文

posted @ 2021-11-03 15:36 Y-flower 阅读(120) 评论(0) 推荐(0) 编辑

文件-练习题
摘要:1:磁盘文件gstudent存放研究生数据,学号,姓名,地址,专业 1):学号 姓名 专业抽出来新建一个‘简明的研究生专业’文件 输出新建后的数据 1 a 专业 2 b 专业 3 c 专业 4 d 专业 2):简明的研究生专业文件中删除一个学号为3的研究生的专业数据,输出删除后的数据 1 a专业 2 阅读全文

posted @ 2021-11-03 15:21 Y-flower 阅读(50) 评论(0) 推荐(0) 编辑

字符串+指针-练习题
摘要:1:求一个子串在主串中出现位置和次数 int main(){ void zizhu(char *a,char *b); char a[]="iaiyiayuiajuuiaiij"; char b[]="iai"; zizhu(a,b); return 0; } void zizhu(char *a, 阅读全文

posted @ 2021-11-03 12:02 Y-flower 阅读(119) 评论(0) 推荐(0) 编辑

线性表-circularLinkList(循环链表练习题)
摘要:1:设计一个算法用于判断带头结点的循环双链表是否对称 int judgebalance(pNode **head) { pNode *p,*q; p=*head->next;//指向下一个正序 q=*head->prev;//指向前一个逆序 /*我的思路 while(p->data==q->data 阅读全文

posted @ 2021-11-03 10:25 Y-flower 阅读(158) 评论(0) 推荐(0) 编辑

线性表-TwoLinkList(双链表)
摘要:知识点 1:循环双链表尾结点指向头结点 typedef struct TWONode { int data; pNode *prev,*next; } pNode; int main(int argc, char const *argv[]) { int n, element, flag; pNod 阅读全文

posted @ 2021-11-03 10:10 Y-flower 阅读(42) 评论(0) 推荐(0) 编辑

线性表-LinkList(单链表练习题)
摘要:typedef struct Nodel { int a; struct Nodel* next; }node; node *head1;head1->next=NUll; node *end1=NULL; 1:在带头结点的单链表L中插入尾结点 void add(int value) { node 阅读全文

posted @ 2021-11-03 09:56 Y-flower 阅读(550) 评论(0) 推荐(0) 编辑

线性表-LinkList(单链表)
摘要:知识点 1:顺序存储结构需要预分配存储空间。单链表不需要分配存储空间,元素限制不受控制2:选择顺序存储结构-线性表需要频繁查找,很少进行插入和删除操作。使用单链表结构-元素个数变化较大或者根本不知道有多大时3:链表改不改变,应该准确理解为链表头指针地址是否改变。增、删、改的是非头结点时,加不加&符号 阅读全文

posted @ 2021-11-01 17:02 Y-flower 阅读(633) 评论(0) 推荐(0) 编辑

线性表-SqList(顺序表)
摘要:知识点: 1:缺点 1)插入和删除操作需要移动大量的元素 2)当线性表长度变化较大时,难以确定存储空间的容量 3)任意造成存储空间的碎片 2:优点 1)无须为表示表中元素之间的逻辑关系而增加额外的存储空间。 2)可以快速的存取表中的任意位置的元素。 3:代码中增加,删除,是需要在原来线性表中进行,所 阅读全文

posted @ 2021-11-01 11:55 Y-flower 阅读(1956) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示