算法与数据结构
Ace_bb
这个作者很懒,什么都没留下…
展开
-
C++ 常用STL之set
常用STLSET集合是数学中的一个基本概念,是由一些不重复的数据组成。C++中常用的集合是setset在头文件< set >中set的声明语法与声明vector时相同: set<int> A;集合中常用的函数函数名称作用A.insert( element )向集合中插入元素,若元素已存在,则插入无效A.earse( element )删除集合中的特定元素,若元素不存在则不做任何操作A.count( element )在集合中查找元素,原创 2020-08-26 17:32:40 · 175 阅读 · 0 评论 -
C++ 常用STL之Vector的使用讲解
常用STLSTL库主要包含了一些动态数组的数据结构。动态数组就是不定长数组,数组的长度是可以根据我们的需要动态改变的。当我们需要开一个数组,但不知道应该开多大的数组时,就可以使用动态数组。vectorC++中的vector在头文集< vector > 中。需引入。使用声明语法为: vector< T > vec T为数据类型 vec为动态数组变量名,初始时vec为空。可以像正常访问数组一样访问vector的元素,vec[1]。但访问的范围不能超过存入数据的范围原创 2020-08-26 17:02:32 · 252 阅读 · 0 评论 -
数据结构排序算法——冒泡排序,插入排序,希尔排序,堆排序,归并排序
排序算法#include<stdio.h>#include<iostream>#include<stdlib.h>using namespace std;typedef int ElementType;// 冒泡排序//N为数组元素个数void baboSort(ElementType A[], int N) { for (int i = 0; i <N; i++) { int flag = 0; for原创 2020-06-19 23:39:56 · 223 阅读 · 0 评论 -
数据结构与算法————图的遍历DFS深度优先搜索和BFS广度优先搜索
图的遍历图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次的次序序列。例如迷宫探索就是把迷宫中的所有路都走一遍。遍历可以解决很多问题,最常见的就是求最短路径。主要有两种搜索算法,深搜和广搜。深度优先搜索DFSDFS是对先序遍历的推广。从某个顶点v开始处理v,然后递归的遍历所有与v相邻的顶点。用图说话,以无向无权图为例。假如我们现在要从0号顶点开始,遍历上图中全部其他顶点。 首先访问0号顶点,判断与0相邻的顶点2、7、5是否可以访问,刚开始肯定没有。先访问2,再判断与2相邻的顶原创 2020-05-29 17:50:20 · 565 阅读 · 0 评论 -
算法与数据结构——图的邻接矩阵存储和邻接表存储
图的存储邻接矩阵用矩阵表示图中各顶点之间的邻接关系和权值。假设图Graph=(V,E)中有n个确定的顶点,V=|v0,v1,v2,v3,v4,v5…vn-1|。对于无权图,邻接矩阵可以表示为:对于有权图:举例:右边的矩阵即为无向图中的邻接矩阵表示。矩阵中第i行j列个元素Gij,若等于1则表示从i到j有边,若等于0则表示无边。特点:无向图邻接矩阵关于主对角线对称,并且主对角线上的元素全为0 。对于无向图,第i行(或第i列)非0元素的个数就是第i个顶点的度。对于有向图,第i行非0元素的个原创 2020-05-28 09:01:40 · 1190 阅读 · 0 评论 -
算法与数据结构 图论 基本理论知识
图实际问题举例引入生活中有地图,交通图,网络图,架构图等,都属于图论的内容。例如乡村分布图如下:生活中一个实际问题就是如果要从一个村子走到另一个村子,怎么走最短,如何一次把所有村子走且只走一遍。就涉及到最短路径问题和图的遍历问题。 所以生活中图的例子是无处不在的,问题和需求也是无处不在的。图的基本概念图是表示任意两个数据点之间某个特定关系的数据结构。在图中任意两个节点之间的关系可以是任意的。可以相连可以不相连,可以是有向的和无向的。定义 G=(V, E)图(graph) G=(V, E)由原创 2020-05-28 08:38:40 · 587 阅读 · 0 评论 -
算法与数据结构 基础篇 链式存储结构
算法与数据结构链式存储结构链式表的定义链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。链表并不像数组那样地址是连续的,而是分...原创 2020-03-30 10:50:10 · 855 阅读 · 0 评论 -
算法与数据结构 线性表的定义及实现
算法与数据结构线性表的定义及实现定义用数据元素的有限序列表示,由n(n>=0)个数据元素a1,a2,…,ai-1,ai.ai+1,…,an组成的有限并且有序的序列。a1为线性起点,下标是元素的序号,表示元素在表中的位置,ai-1是ai的直接前趋,ai+1 是ai的直接后继 an为线性终点关键点: 存在有序关系,必须是按一定序列排列基本操作函数作用List M...原创 2020-03-27 13:06:12 · 445 阅读 · 0 评论 -
蓝桥杯题目练习 [蓝桥杯2019初赛]等差数列
[蓝桥杯2019初赛]等差数列题目描述数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N 个整数。现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差数列有几项?输入输入的第一行包含一个整数N。第二行包含N 个整数A1.A2,…, AN。(注意A1<=AN 并不一定是按等差数列中的顺序给出)2<=N<=100000,0&...原创 2020-03-11 22:10:30 · 868 阅读 · 0 评论 -
算法与数据结构之STL和基本数据结构 栈stack、队列queue、链表和list、set
栈stack栈的特点是先进后出,形象的讲就是往一个单口圆形的杯子里加入半径与杯口相同。显然,这样放球最后放的最先拿出来,最先放的最后才能拿出来。 栈的概念在Java中非常重要。头文件: #include < stack >相关操作代码示例说明stack < Type > s;定义一个栈,数据类型为Type,实例化为int,double,stri...原创 2020-03-08 22:03:51 · 237 阅读 · 0 评论 -
算法与数据结构之STL和基本数据结构————vector容器的使用
vector容器vector是一个STL的动态数组,在运行时能根据需要改变数组的大小,以数组的形式存储。头文件为:#include <vector>定义vector容器定义示例说明vector < int > a;默认初始化a为空vector < int > b(a);用b定义avector < int...原创 2020-03-08 21:33:43 · 308 阅读 · 0 评论 -
数据结构 基本概念的定义 数据 数据元素 数据项 数据对象 数据结构 数据类型 数据的逻辑结构 数据的存储结果 抽象数据类型
数据结构**数据结构是计算机存储、组织数据的方式。**数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构 是域特定问题相关的某一数据元素的集合和该集合元素之间的关系组成的,定义式为:Data_Structure = {D, R}其中:D是某一数据元素的集合。 R是该...原创 2020-03-04 11:32:17 · 916 阅读 · 0 评论 -
算法与数据结构 二分查找
二分查找例题1: 猜数字A心里想一个1~1000的数字,让B才,B可以问A,A只能回到对或错。请问最少需要猜几次?这题一种猜数字的方法是一个一个猜,猜1000次,显然这不是最优的方法。B可以每次猜范围的中间值。即第一次猜500,A回答是否,如果答案是大于500,范围缩小到500~1000,B再猜750,如此循环。每次猜缩小到原来的一半,这样最多只需要猜10次。 这就是二分查找的思想。例题...原创 2020-02-20 23:11:07 · 399 阅读 · 0 评论