![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 56
真的吃很多
这个作者很懒,什么都没留下…
展开
-
【算法】归并排序
参考孟姐代码#include<bits/stdc++.h>using namespace std;int a[2000001],b[2000001];void mergesort(int l,int r){ if(l>=r) return; int mid=(l+r)/2; mergesort(l,mid); mergesort(mid+1,r); int i=l; int j=mid+1; int c=0; while(i<=mid&&j&原创 2021-11-03 19:23:05 · 110 阅读 · 0 评论 -
【数据结构/查找】哈希表
哈希函数有一种函数,根据这个函数和查找关键字key,可以直接确定查找值所在位置,而不需要一个个比较。这样就“预先知道”key所在的位置,直接找到数据,提升效率。即地址index=Hash(key)说白了,hash函数就是根据key计算出存储地址的位置,而哈希表是基于哈希函数建立的一种查找表。哈希表(散列表)此处大部分内容来自简书哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快原创 2021-06-15 21:30:45 · 733 阅读 · 0 评论 -
【算法】冒泡排序
最最最简单的冒泡排序每一趟把数值最大的弄到最后一个最坏情况下进行n-1趟原理以及思路参考,这个博客写的很详细1.原理:比较两个相邻的元素,将值大的元素交换到右边2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。(1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。(2)比较第2和第3个数,将小数 放在前面,大数放在后面。…(3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成(4)在上面一趟比较完成后转载 2021-06-14 11:19:58 · 63 阅读 · 0 评论 -
【STL】C++中的map用法
map简介map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可称为该关键字的值)的数据处理能力map的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。map功能1、自动建立Key - value的对应。key 和 value可以是任意你需要的类型。2、根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,0原创 2021-06-05 10:20:41 · 162 阅读 · 0 评论 -
【数据结构PTA】7-2 排座位 (25 分)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系,其中关系为1表示是朋友,-1表示是死对头。注意两个人不可能既是朋友又是敌人。最后K行,每行给出一对需要查询的宾转载 2021-05-22 10:12:38 · 423 阅读 · 0 评论 -
【数据结构】图的习题 PTA
判断题1、无向连通图至少有一个顶点的度为1。TF一个无向图围成的三角形就是每个顶点度都为22、无向连通图所有顶点的度之和为偶数。TF顶点的度为顶点所连接的边的个数,无向连通图中的顶点的度之和为边数 * 2所以顶点的度之和为偶数3、在任一有向图中,所有顶点的入度之和等于所有顶点的出度之和。TF一个结点的出度是相连结点的入度4、对于带权无向图 G = (V, E),M 是 G 的最小生成树,则 M 中任意两点 V1 到 V2 的路径原创 2021-05-20 21:42:43 · 5340 阅读 · 0 评论 -
【数据结构/线性表】线性表的顺序表示和实现
1.称顺序存储结构的线性表为顺序表2.线性表的顺序存储结构是一种随机存取的存储结构3.通常用数组来描述数据结构中的顺序存储结构4.逻辑结构与存储结构一致5.访问每个元素所花时间相等顺序表数据结构数组形式//顺序表数据结构typedef struct{ ElemType data[MaxSize];//顺序表元素 int length; //顺序表当前长度}SqList; //顺序表的结构类型为SqList指针形式//顺序原创 2021-05-16 11:45:56 · 97 阅读 · 0 评论 -
【数据结构习题】PTA 7-1 玩转二叉树 前序遍历+中序遍历
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:71 2 3 4 5 6 74 1 3 2 6 5 7输出样例:4 6 1原创 2021-05-16 10:31:54 · 1660 阅读 · 1 评论 -
【数据结构习题】PTA 7-2 树的遍历 后序遍历+中序遍历
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2数据结构杀疯了,对不起我真的不懂你TT后序遍历+中序遍历思想原创 2021-05-16 09:53:11 · 5324 阅读 · 4 评论 -
【数据结构/树】树的存储结构
双亲表示法每个结点有数据域Data和Parent域存放双亲结点的位置定义如下:#define MAX 100typedef struct TNode{ DataType data; int parent;}TNode;typedef struct{ TNode tree[MAX]; int nodenum;}ParentTree;孩子表示法把每个结点的孩子结点排列起来,构成一个单链表,称为孩子链表。n个结点共有n个孩子链表(叶子结点的孩子链表为空表),而n个结点的数据和n原创 2021-05-09 09:57:15 · 77 阅读 · 0 评论 -
【数据结构/图】图的定义和术语
图的定义图(G)是由两个集合V和E组成,记为G={V,E},其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合。所以也可以说,图是顶点集合以及顶点间的关系集合组成的一种数据结构。有向图对于如上有向图来说,G=(V,E) , 其中顶点集合V={A,B,C,D};弧集合E={<A,D>,<B,A>,<C,A>,<B,C>}注意!(1)对于有向图来说,<V2,V6>表示从顶点V2到顶点V6,而<V6,V2>表示顶点V6到顶点原创 2021-05-08 15:42:41 · 1788 阅读 · 0 评论 -
【数据结构习题】7-1 符号配对 (20 分) 请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。
数据结构要了我的老命真的7-1 符号配对 (20 分)请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。输入一:void test(){int原创 2021-04-11 18:50:20 · 10831 阅读 · 1 评论 -
【算法】插入排序
直接插入排序基本思想:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。直接插入排序代码如下:#include <bits/stdc++.h>using namespace std;void InsertSort(int a[]){ int i,j; for(i=2;i<7;i++) { if(a[i]<a[i-1]) { a[0]=a[i]; // a[0]是监视哨 a[i]=a[i-1]; for(j=i原创 2021-06-14 09:50:42 · 111 阅读 · 0 评论 -
【算法】希尔排序算法Shell Sort
原理代码#include <bits/stdc++.h>using namespace std;void print_sort(int arr[],int n){ int i; for(i=0;i<n;i++) { cout<<arr[i]<<" "; }}void shell_sort(int arr[],int n){ int i,j,inc,key;//inc初始增量 //初始增量是n/2,每一趟之后除以2 for(i原创 2021-02-23 20:28:45 · 81 阅读 · 0 评论 -
【算法】堆排序算法Heap Sort
视频学习:https://www.bilibili.com/video/BV1Eb41147dK堆排序基础(1)满足完全二叉树(2)父节点的值大于子节点的值(视频讲的是大顶堆)完全二叉树这七个都是完全二叉树完全二叉树:一个父节点只能有两个子节点,并且必须从上到下,从左到右这样生成节点。这样就不是完全二叉树(这里构造完全二叉树要从最左边开始添加)这样就是个完全二叉树大顶堆完全二叉树:父节点一定要大宇子节点,如下建堆代码一:建堆#include <bits/stdc+原创 2021-02-20 20:09:07 · 125 阅读 · 0 评论 -
【算法】快速排序算法
快速排序原理快速排序代码实现#include <bits/stdc++.h>using namespace std;int a[101],n;void quicksort(int left,int right){ int i,j,t,temp;//temp存放基准数 if(left>right) return; temp=a[left]; i=left; j=right; while(i!=j) { while(a[j]>=temp&&am原创 2021-02-19 21:52:23 · 103 阅读 · 0 评论 -
【算法】高精度算法(加减乘除)
为啥有高精度算法A+B难道不是直接cout<<a+b;吗不不不,如果你遇到了爆炸范围,就不能用int或者long long了高精度算法-加法高精度算法-减法高精度算法-乘法高精度算法-除法原创 2021-02-16 10:53:23 · 465 阅读 · 1 评论 -
【素数判断】埃氏筛法和欧拉筛法(线性筛法)
埃氏筛法原创 2021-02-01 21:13:00 · 493 阅读 · 1 评论 -
深度优先搜索和广度优先搜索(基础自学)(c++实现)
DFS与BFS对比我们假设一个节点衍生出来的相邻节点平均的个数是N个,那么当起点开始搜索的时候,队列有一个节点,当起点拿出来后,把它相邻的节点放进去,那么队列就有N个节点,当下一层的搜索中再加入元素到队列的时候,节点数达到了N2,你可以想想,一旦N是一个比较大的数的时候,这个树的层次又比较深,那这个队列就得需要很大的内存空间了。于是广度优先搜索的缺点出来了:在树的层次较深&子节点数较多的情况下,消耗内存十分严重。广度优先搜索适用于节点的子节点数量不多,并且树的层次不会太深的情况。那么深度优先就原创 2020-11-21 15:31:06 · 1918 阅读 · 0 评论