排序算法


快速排序#include <iostream>using namespace std;const int N =1e6+10;int n;int a[N];void quick_sort(int a[N],int l,int r){ if(l>=r) return ;

人口模型


微分方程模型人口模型1. Malthus(马尔萨斯人口模型)变量表示:(t, P(t)):表示人口的数对,t为时间,P(t) 为 t 时刻的人口数b, p:分别表示出生率、死亡率​ 比如说,2002年年初人口总数是 p ,则2002年出生的人数和死亡的人数就分别是 bp 和 dp .

串的模式匹配算法.md


算法目的​确定主串中所含子串(模式串)第一次出现的位置(定位)算法应用搜索引擎、拼写检查、语言翻译、数据压缩算法种类BF算法(Brute-Force,又称古典的、经典的、朴素的、穷举的)KMP算法(特点:速度快)BF算法Brute-Force简称为BF算法,亦称简单匹配算法。采用穷举法的思路将主串的

顺序表和链表的比较


顺序表和链表的比较链式存储结构的优点:结点空间可以动态申请和释放:数据元素的逻辑次序靠结点的指针来指示,插入和删除时不需要移动数据元素。链式存储结构的缺点:存储密度小,每个结点的指针域需额外占用存储空间。当每个结点的数据域所占字节不多时,指针域所占存储空间的比重显得很大。链式存储结构是非随机存取结构


串的类型定义ADT String{ 数据对象:D={a,|a,∈CharacterSet,i=1,2,…,n,n≥O} 数据关系:R1={<ai-1,ai>|ai-1,ai∈D,i=1,2,…,n} 基本操作: (1)StrAssign (&T,c

链队列


链队列的类型定义#define MAXQSIZE 100//最大队列长度typedef struct Qnode{ QElemTypedata; stuct Qnode *next;}QNode,*QuenePtr;typedef struct{ QuenePtr front;//

单链表的常用算法


单链表的常用算法取值:取单链表中第i个元素的内容(有头结点的单链表)算法思路从链表的头指针出发,顺着链域next逐个结点往下搜索,直至搜索到第i个结点为止。因此,链表不是随机存取结构,是顺序结构算法步骤从第一个结点(L - > next)顺链扫描,用指针p指向当前扫描到的结点,p初值p=L -

双向链表的插入和删除


双向链表的插入 void ListInsert_DuL(DuLinkList &L,Int i,ElemType e){//在带头结点的双向循环链表L中第ⅰ个位置之前插入元素eif(!(p=GetElemP_DuL(L,i)))return ERROR;s=new DuLNode; s-&g

循环队列


队列的表示和操作的实现队列是仅在表尾进行插入操作,在表头进行删除操作的线性表。表尾即$a_n$端,称为队尾;表头即$a_1$端,称为队头。它是一种先进先出(FIFO)的线性表。插入元素称为入队;删除元素称为出队。队列的存储结构为链队或顺序队(常用循环顺序队)。队列的抽象数据类型定义ADT Queue

循环队列的操作


循环队列的操作——队列的初始化Status InitQueue (SqQueue &Q){ Q.base =new QElemType[MAXQSIZE]//分配数组空间 //Q.base =(QElemType*) //malloc(MAXQSIZE*si