
算法与数据结构
文章平均质量分 62
7Maggie_C
这个作者很懒,什么都没留下…
展开
-
大话数据结构 -- 树
一整天停停看看终于把树这一章看完了,要记忆和理解的东西有点多,写篇博客总结下。。。咳咳,下面是正题。---------------------------------------------------------树的定义树是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1、有且只有一个特定的称为根(Root)的结点;2、当n>1时,其余结...原创 2018-08-27 00:16:09 · 986 阅读 · 0 评论 -
为什么说快速排序是性能最好的排序算法?
刚刚学习了排序这一章,看到了书中最后的一个总结表:心想从表上来看,堆排序不该是最好的排序算法么?不管最好、最坏还是平均情况,时间复杂度都是O(nlogn),而且还不像快排和归并排序那样占空间,为什么说快速排序是最好的算法呢?其实经过实验,会发现相同的数据规模,快速排序比堆排序的效率高很多,并且随着数据规模的扩大,二者的差距不断扩大,快速排序的优势越来越明显。快速排序的时间复杂度近似线性...原创 2018-09-12 22:47:41 · 55368 阅读 · 4 评论 -
C++ 二分求幂——当a、b很大时,怎样快速得到 a 的 b 次方 (a^b)
附代码://// 57.cpp// 人见人爱A^B//// Created by chenmeiqi on 2019/3/29.// Copyright © 2019年 chenmeiqi. All rights reserved.//#include<iostream>#include<array>#include <...原创 2019-03-29 15:08:38 · 1521 阅读 · 0 评论 -
C++ 高精度整数,两个大数相加如何处理
这是一例典型的考察高精度整数的题目,其输入非常巨大(1000位),我们将不能使用任何整数类型来直接保存它。所以我们只能采用上文中所定义的结构体来完成对其的保存,并且实现两个高精度整数的加法。附代码://// 60.cpp// a+b//// Created by chenmeiqi on 2019/3/29.// Copyright © 2019年 chenm...原创 2019-03-29 19:18:32 · 1815 阅读 · 0 评论 -
C++ 图论之拓扑排序
应用:附C++代码://// 1448.cpp// Legal or Not//// Created by chenmeiqi on 2019/4/10.// Copyright © 2019年 chenmeiqi. All rights reserved.//#include <iostream>#include <vector...原创 2019-04-10 15:08:44 · 522 阅读 · 0 评论 -
C++ 高精度整数,求n的阶乘(n!),大数乘小数如何处理
附代码://// 61.cpp// N的阶乘//// Created by chenmeiqi on 2019/3/31.// Copyright © 2019年 chenmeiqi. All rights reserved.//#include <iostream>#include <cmath>using namespace std...原创 2019-04-01 14:30:41 · 3246 阅读 · 0 评论 -
C++ 搜索之枚举
应用:附C++代码://// 1045.cpp// 百鸡问题//// Created by chenmeiqi on 2019/4/10.// Copyright © 2019年 chenmeiqi. All rights reserved.//// 注意此题有前提条件就是鸡的总数量一定为100!#include <iostream>u...原创 2019-04-10 20:11:54 · 551 阅读 · 0 评论 -
C++ 高精度整数,大数的进制转换
附 C++ 代码://// 62.cpp// 进制转换//// Created by chenmeiqi on 2019/4/1.// Copyright © 2019年 chenmeiqi. All rights reserved.//#include <iostream>#include <cmath>using namesp...原创 2019-04-01 21:08:45 · 2261 阅读 · 0 评论 -
C++ 搜索之广度优先搜索(BFS)
例题1:附C++代码://// 1456.cpp// 胜利大逃亡//// Created by chenmeiqi on 2019/4/11.// Copyright © 2019年 chenmeiqi. All rights reserved.//#include <iostream>#include <queue>...原创 2019-04-11 17:23:51 · 1746 阅读 · 0 评论 -
C++ 图论之邻接链表的实现
我们知道,图的一种表示的数据结构是邻接链表。而谈到邻接链表,大家可能会对链表产生恐惧。较好地使用链表而不出现错误需要对链表原理的深刻理解和扎实的编程功底,那么我们该如何快速地学会使用邻接链表呢?这里,我推荐使用标准模版库(STL)中的标准模版 std::vector。接下来,我们了解一些vector在实现邻接链表中的应用。首先我们定义一个结构体,包括邻接结点和边权值,用来表示一条边。...原创 2019-04-02 19:53:42 · 2397 阅读 · 1 评论 -
C++ 图论之并查集
首先,我们定义一个数组,用双亲表示法来表示各棵树(所有的集合元素个数总和为N):int Tree[N];用Tree[i]来表示结点i的双亲结点,若Tree[i]为-1则表示该结点不存在双亲结点,即结点i为其所在树的根结点。那么,为了查找结点x所在树的根结点,我们定义以下函数:int findRoot(int x){ int ret; wh...原创 2019-04-02 20:26:37 · 594 阅读 · 0 评论 -
大话数据结构 -- 查找
查找概论查找,就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表(Search Table)是由同一类型的数据元素(或记录)组成的集合。关键字(Key)是数据元素中某个数据项的值,又称为键值。它可以标识一个数据元素,也可以标识一个记录的某个数据项(字段),我们称为关键码。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字(Primar...原创 2018-09-06 21:24:00 · 1080 阅读 · 0 评论 -
大话数据结构 -- 排序
基本概念排序:假设含有n个记录的序列为{r1,r2,......,rn},其相应的关键字分别为{k1,k2,......,kn},需确定1,2,......,n的一种排列p1,p2,......,pn,使其相应的关键字满足kp1≤kp2≤......≤kpn(非递减或非递增)关系,即使得序列成为一个按关键字有序的序列{rp1,rp2,......,rpn},这样的操作就称为排序。在排序问...原创 2018-09-09 22:46:13 · 658 阅读 · 0 评论 -
大话数据结构 -- 单链表的创建、查找、增删。
//// main.cpp// 单链表//// Created by Maggie on 18/8/20.// Copyright © 2018年 Maggie. All rights reserved.//#include <iostream>#include <stdlib.h>#include <time.h>using n...原创 2018-08-20 16:25:00 · 645 阅读 · 2 评论 -
大话数据结构--静态链表的创建、增删
//// main.cpp// 静态链表//// Created by Maggie on 18/8/20.// Copyright © 2018年 Maggie. All rights reserved.//#include <iostream>#include <stdlib.h>using namespace std;// 线性表的静态...原创 2018-08-20 18:03:21 · 461 阅读 · 0 评论 -
大话数据结构--链栈
//// main.cpp// 链栈//// Created by Maggie on 18/8/21.// Copyright © 2018年 Maggie. All rights reserved.//#include <iostream>using namespace std;typedef int SElemType;typedef stru...原创 2018-08-21 16:29:03 · 343 阅读 · 0 评论 -
大话数据结构--两栈共用空间结构
//// main.cpp// 两栈共享空间结构//// Created by Maggie on 18/8/21.// Copyright © 2018年 Maggie. All rights reserved.////两栈共享空间结构#include <iostream>using namespace std;typedef int SElemTyp...原创 2018-08-21 15:45:34 · 298 阅读 · 0 评论 -
大话数据结构--顺序栈
//// main.cpp// 顺序栈//// Created by Maggie on 18/8/21.// Copyright © 2018年 Maggie. All rights reserved.//#include <iostream>using namespace std;#define MAXSIZE 100typedef int SE...原创 2018-08-21 15:02:13 · 241 阅读 · 0 评论 -
大话数据结构 -- 循环队列
//// main.cpp// 循环队列//// Created by Maggie on 18/8/21.// Copyright © 2018年 Maggie. All rights reserved.//#include <iostream>using namespace std;#define MAXSIZE 100typedef int Q...原创 2018-08-21 18:22:12 · 322 阅读 · 0 评论 -
大话数据结构 -- 串
最近有点浮躁,看东西看一会就看不进去,调bug几个小时才调好。。。要坚持啊,Maggie!!//// main.cpp// 串//// Created by Maggie on 18/8/23.// Copyright © 2018年 Maggie. All rights reserved.//#include <iostream>#define MAX...原创 2018-08-24 17:41:07 · 272 阅读 · 0 评论 -
大话数据结构 -- 链队列
//// main.cpp// 链队列//// Created by Maggie on 18/8/21.// Copyright © 2018年 Maggie. All rights reserved.//#include <iostream>using namespace std;typedef int QElemType;// 结点结构ty...原创 2018-08-21 21:02:01 · 265 阅读 · 0 评论 -
大话数据结构 -- KMP模式匹配算法
串这一节在大一学数据结构时老师并没有着重讲解,只让我们会求一个字符串的next数组就行了,这次学习的时候认真看了下,也花了挺长时间的,好好总结一下:1、串的匹配是串的基础同时也非常重要的操作,最初人们用朴素的模式匹配算法,即:int Index(String S, String T, int pos){ //在主串S中找到从pos开始与子串T相匹配的第一个字符的位置 int...原创 2018-08-24 23:30:46 · 1504 阅读 · 0 评论 -
大话数据结构 -- 图
图的各种定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。图与其他数据结构的不同之处见下表:数据结构 结点之间关系 数据元素名称 数据元素可否没有 线性表 一对一 元素 可以(...原创 2018-09-05 19:01:16 · 6993 阅读 · 4 评论 -
C++ 图论之最短路径
Floyd算法应用:附C++代码://// 1447.cpp// 最短路//// Created by chenmeiqi on 2019/4/9.// Copyright © 2019年 chenmeiqi. All rights reserved.//#include <iostream>using namespace std...原创 2019-04-09 19:09:05 · 1467 阅读 · 0 评论