2020 算法和数据结构
不停---
吹皱一池春水
buting.site
展开
-
快速幂算法
****快速幂(Exponentiation by squaring)可以以o(logn)的时间复杂度来计算乘方。1.递归算法int squareEx(int a,int n){ if(n==0) return 1; if(n%2==1) { //奇数 return a*squareEx(a,n-1); } ...原创 2020-02-21 14:42:01 · 157 阅读 · 0 评论 -
数据结构--查找 对半查找 斐波那契查找 插值查找
1.对半查找(二分)查找#include<iostream>using namespace std;template<typename T>int BinarySearch(T num[],T left,T right,T key){ T LL = left; T RR = right; T middle = (RR+LL)/2; ...原创 2020-02-27 21:52:55 · 881 阅读 · 0 评论 -
数据结构----顺序查找
1.查找算法的四个特征:内外有别:分为内查找和外查找静态动态: 静态查找时,表的内容不变;动态查找时,表的内容不断地变化。原词变词: 原词系指用原来的关键词,变词系指使用经过变换的关键词。数字文字: 指进行比较的时候,是否用数字的性质(或者类似于数字的性质进行分布排序)。2.顺序查找2.1无序表的顺序查找从起点开始顺着往下查,一直找到相同的关键词为止。(或者查找失败算法1:f...原创 2019-12-21 16:28:53 · 482 阅读 · 0 评论 -
数据结构----查找 目录
1.知识点1.顺序查找1.1无序表的顺序查找1.2有序表的顺序查找2.基于关键词比较的查找2.1对半查找2.2一致对半查找2.3斐波那契数列2.4插值查找3.二叉查找树3.1基本概念与性质3.2查找,插入,和删除3.3平均情况时间分析4.最优二叉查找树4.1访问频率4.2最优二叉查找树4.3近似最优树构造5.AVL树5.1概念和性质5.2查找和插入操作5.3...原创 2019-12-20 21:53:28 · 162 阅读 · 0 评论 -
数据结构----散列
查找的本质: 已知对象求位置K1: 有序安排对象:全序,半序K2: 直接算出对象位置:散列散列查找法的两项基本工作计算位置:构造散列函数确定关键词存储位置解决冲突:应用某种策略解决多个关键词位置问题时间复杂度几乎是常量;O(1) ,即查找时间与问题规模无关。散列表(哈希表):**类型名称:**符号表(Symbol Table)数据对象集:符号表是“名字(Name)----属性(A...原创 2019-12-12 13:41:38 · 248 阅读 · 0 评论 -
数据结构---基数排序
桶排序://数据特点//数据是有限范围内的,可以给每个数据值构造一个链表用于插入;void Bucket_Sort(ElementType A[],int N){ count[];//initialize while() { //读入数值 //将读入的数值插入到对应的桶中 }}基数排序:(桶排序优化)1.Least S...原创 2019-12-07 23:16:22 · 191 阅读 · 0 评论 -
数据结构---快速排序
void Quicksort(ElementType A[],int left,int right){ if(cutoff<=right-left) { int Pivot = Median3(A, left, right); i = left; j = right - 1; for (;;) { while(...原创 2019-12-07 22:37:22 · 130 阅读 · 0 评论 -
数据结构---归并排序
算法1:void Merge(int numa[],int numb[],int tmp[],int l,int r,int leftend,int rightend,int max){ //l the beginning of the first array //r the beginning of the second array //max the size of...原创 2019-12-02 21:48:25 · 116 阅读 · 0 评论 -
数据结构---堆排序
算法1:void Heap_Sort(ElementType A[],int N){ BuildHeap(A); for(i=0;i<n;i++) { TmpA[i]=DeleteMin(A); } for(i=0;i<N;i++) A[i]=TmpA[i];}需要额外o(N)空间算法2:void Heap_Sort(ElementType A[],in...原创 2019-12-02 19:31:48 · 114 阅读 · 0 评论 -
04--树5 Root of AVL Tree
题目:https://pintia.cn/problem-sets/1169812488801005568/problems/1182238074241568769**思路:**简单的AVL树的建立原创 2019-12-02 14:49:04 · 112 阅读 · 0 评论 -
数据结构---0302List leaves
题目:https://pintia.cn/problem-sets/1169812488801005568/problems/1179652789523730433https://pintia.cn/problem-sets/1169812488801005568/problems/1179652789523730433#include<iostream>#include<...原创 2019-11-02 11:53:31 · 144 阅读 · 0 评论 -
数据结构---0301树的同构
**题目:**https://pintia.cn/problem-sets/1169812488801005568/problems/1179652789523730432step1:#include<iostream>#include<string>#define null -1using namespace std;struct BiNode{ char...原创 2019-11-02 11:08:39 · 105 阅读 · 0 评论 -
数据结构---平衡二叉树
1.BF(Balance Factor) BF(T)=hL-hR,其中hL和hR分别为T的左,右子树的高度2.(AVL树)任一结点的左,右子树高度差的绝对值不超过1,即|BF(T)|<=13.平衡二叉树的调整3.1右单旋:不平衡的发现者 A,麻烦节点 B 在发现者的右子树的右边,叫RR插入,需要进行RR旋转(右单旋)3.2LL旋转3.3LR旋转...原创 2019-10-19 10:49:57 · 1686 阅读 · 0 评论 -
数据结构--二叉搜索树删除操作
1.二叉树的删除BinTree Delete(ElementType X,BinTree BST){ Position Tmp; if(!BST) printf("要删除的元素未找到"); else if(X<BST->Data) { BST->Left=Delete(X,BST->Left);/*左子树递归删除*/ } else if(X>BST-...原创 2019-10-18 21:31:22 · 323 阅读 · 0 评论 -
数据结构--编程题04 Pop Sequence
#include<iostream>#include<vector>#include<stack>using namespace std;int main(){ int m,n,k; cin>>m>>n>>k; for(int i=0;i<k;i++) { stack<int> s; ...转载 2019-10-07 20:51:00 · 117 阅读 · 0 评论 -
数据结构---编程题 线性结构03
#include<stdio.h>#include<iostream>#define MaxSize 100005using namespace std;int main(){ int Data[MaxSize]; int Next[MaxSize]; int list[MaxSize]; int FirstAdd,N,K; scanf("%d %d %d...转载 2019-10-07 17:00:40 · 157 阅读 · 0 评论 -
数据结构--编程题--0102 Maximum Subsequence Sum
#include<iostream>using namespace std;int main(){ int k; cin>>k; int tag=0; int num[k]; for(int i=0;i<k;i++) { cin>>num[i]; } int thissum=0,maxsum=0; int first=0,...原创 2019-10-05 15:27:05 · 132 阅读 · 0 评论 -
数据结构----编程题01 --最大子列和问题
```cpp#include<iostream>using namespace std;int main(){ int k; cin>>k; int num[k]; for(int i=0;i<k;i++) { cin>>num[i]; } int thissum=0,maxsum=0; for(int i=0;i<k;...原创 2019-10-05 14:30:00 · 120 阅读 · 0 评论 -
数据结构---函数题 (2) 两个有序列表的合并
#include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef PtrToNode List;List ...原创 2019-10-04 23:39:50 · 557 阅读 · 0 评论 -
数据结构---函数题 (1)BinarySearch
Position BinarySearch(List L,ElemenType x){ Position left=1; Position right=L.Last; while(left<=right) { Position center=(left+right)/2; if(x>L.Data[center]) { left=center+1; }...原创 2019-10-04 23:10:33 · 2577 阅读 · 0 评论 -
数据结构----二叉树遍历应用
例子:输出二叉树中的叶子结点、增加一个输出判定;if (BT){ if(!BT->Left&& !BT->Right) printf(:%d",BT->data); ----例子:求二叉树的高度。int PostOrderGetHeight(BinTree BT){ int HL,BR,MaxH; if(BT) { HL=Pos...原创 2019-05-26 22:42:48 · 262 阅读 · 0 评论 -
数据结构----二叉树遍历 层序遍历
二叉树遍历的核心问题:二维结构的线性化队列实现:遍历从根结点开始,首先将根结点入队,然后开始执行循环:结点出队,访问该结点,其左右儿子入队。void LevelOrderTraversal(BinTree BT){ Queue Q; BinTree T; if (!BT) return;/* 若是空树则直接返回*/ Q=CreateQueue(Maxsize);//创建并初始化队列...原创 2019-05-26 21:51:50 · 232 阅读 · 0 评论 -
数据结构-----二叉树遍历 利用堆栈的非递归算法
中序遍历非递归遍历算法void InOrderTraversal(BinTree BT){ BinTree T=BT; Stack S = CreatStack(Maxsize); while(T || !isempty(s)) { while(T) { push(S,T); T=T->Left; } if(!isempty(s)) { T=...原创 2019-05-26 21:12:18 · 353 阅读 · 0 评论 -
Pop Sequence
题目:https://pintia.cn/problem-sets/1077214780527620096/problems/1103507412634030083c语言#include <stdio.h> #define MAXSIZE 1000 typedef struct{ int data[MAXSIZE]; int top;}SqStack; ...转载 2019-05-08 16:01:24 · 389 阅读 · 0 评论 -
0306---堆栈的基本操作
题目:http://dsa.openjudge.cn/stack/0306/判定输入序列是否可能为输出序列#include <iostream>#include<stack>#include<queue>using namespace std;int main(){ int n; cin >> n; int k = n; que...原创 2019-10-11 19:28:28 · 239 阅读 · 0 评论 -
数据结构-----队列和栈-------中缀表达式的值
#include <iostream>#include <stack> using namespace std; char suf_exp[100];//储存后缀表达式int z=0;//suf_exp的下标变量 bool cmp(char a,char b){//若操作符a和b的优先级 if(a=='*'||a=='/'){//a的高 ...原创 2019-08-03 18:37:57 · 160 阅读 · 0 评论 -
数据结构---字符串插入
地址:http://dsa.openjudge.cn/linearlist/0203/#include "pch.h"#include <iostream>#include<string>using namespace std;int main(){ char s1[100],s2[100]; cin >> s1 >> ...原创 2019-08-03 15:02:07 · 819 阅读 · 0 评论 -
数据结构习题---线性表(1)
地址:http://dsa.openjudge.cn/linearlist/0201/#include <stdio.h>#include <string.h>//1156K, time 94msint DeleteCmp(const char * stra, const char * strb) //默认stra是比较短的单词,后面的函数有单独判断单词长度的步骤,...转载 2019-07-29 21:34:49 · 243 阅读 · 0 评论 -
算法(Algorithm) 第四版
1.第一章2.第二章3.第三章4.第四章5.第五章原创 2020-06-17 20:02:47 · 337 阅读 · 0 评论 -
算法和数据结构
1.动态规划2.回溯3.递归4.分治5.贪心6.算法分析原创 2020-06-17 19:57:49 · 141 阅读 · 0 评论