
数据结构与算法分析
数据结构与算法分析
_朱坚强
本人极菜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法分析(十)——母牛的故事
题目母牛的故事 从前有一个农夫,他的名字叫做约翰。他养了很多很多头母牛。突然有一天,一只调皮的母牛走丢了,农夫要尽快的抓住她,不然她就又跑掉了!现在我们将问题简单化。假设农夫和母牛都站在一条数轴上,农夫开始的位置为N,母牛的位置为K。 约翰有三种行动方式,每行动一次需要一秒钟时间,假设农夫的现在的位置为X,他可以向前走一格到X+1,也可以向后走一格走到X-1,他还可以传送!一下子走到了2X...原创 2019-12-20 18:18:35 · 449 阅读 · 0 评论 -
数据结构与算法分析(八)——BFS算法
图的建立图的组成:顶点(Vertices)、边(Edges)图的一些概念:1.邻接(adjacent):v1和v2相连接2.路径(path):一个顶点序列3.圈(cycle):一个顶点出现了两次图的表示:1.邻接矩阵(空间大,但是速度快)2.邻接表(空间小,但速度慢)代码实现:实现的是无权图1.根据边的数目确定循环次数(一条边对应两个顶点)2.用一个元素为vector的数...原创 2019-12-08 21:14:23 · 484 阅读 · 0 评论 -
数据结构与算法分析(七)——C++实现平衡二叉树
平衡二叉树的概念概念:1.每个节点的左子树和右子树的高度最多差1的二叉查找树操作时的注意事项:每一次的插入可能会破坏平衡条件,故需要对节点进行平衡性判断然后平衡(单旋转和双旋转)。这里认为第一个不平衡的节点为a单旋转的使用情况:1.对a的左儿子的左子树进行插入;2.对a的右儿子的右子树进行插入;注:单旋转需将儿子节点上浮,a和其子树的root作为其儿子,原儿子节点的另一侧子树现...原创 2019-12-02 22:50:31 · 388 阅读 · 0 评论 -
数据结构与算法分析(六)——C++实现二叉查找树
二叉树的基本概念1.定义二叉树(binary tree)是一颗树,其中每个节点都不能有多于两个的儿子。2.实现每一个节点用一个结构体表示,包含一个关键字和两个指向左儿子和右儿子的指针。3.遍历方式中序遍历:左 节点 右后序遍历:左 右 节点先序遍历:节点 左 右4.二叉查找树的概念一颗二叉树,对于每一个节点X,它的左子树中所有的关键字值都小于X的关键字值,它的右子树中所有的关键...原创 2019-11-25 18:18:10 · 257 阅读 · 0 评论 -
数据结构与算法分析(五)——常用排序
(一)插入排序算法时间复杂度:O(N2)算法实现步骤(设需要排序的数组为a[]):1.构造一个新数组copy[],内容为空;2.从前向后取出a[]中的元素,取出的元素记为a[i];3.每取出一次元素,将a[i]与copy[]中的元素(i之前的位置,这里新开了一个变量index=i用来在copy[]中移位)进行比较,从copy[index-1]开始比较,如果小于的话则copy[index-...原创 2019-11-16 19:21:40 · 407 阅读 · 1 评论 -
数据结构与算法分析(四)——C++实现栈
基本概念1.后进先出2.限制插入和删除只能在一个位置上进行的表3.两种基本操作:进栈、出栈应用1.平衡符号2.后缀表达式3.中缀到后缀的转换4.函数调用(还没看书上的详细描述。。。)代码实现(1)数组实现1.开辟一个有限大的数组作为栈,利用int型的top去表示栈顶//stack_array.h#pragma once#include "includes.h"#de...原创 2019-10-15 21:22:24 · 258 阅读 · 0 评论 -
数据结构和算法分析(三)——C++实现队列
基本概念1.先进先出2.两大基本操作:入队(队尾插入元素),出队(队头删除元素)3.三大属性:first(队头位置),last(队尾位置),total(队列中的数据个数)应用1.交给打印机的作业存放在一个队列中2.图论中的一些算法使用队列提高运行效率(还未知)3.操作系统中用得比较多4.不同的硬件设备传输信息时代码实现(1)数组实现1.数组实现使用的是环形队列//queue...原创 2019-10-15 19:49:54 · 449 阅读 · 0 评论 -
数据结构与算法分析(一)——C++文件读写+py文件读写
string类有了string就可以跟字符数组说拜拜了,方便多了。。。常用:长度:str.length()尺寸:str.size()比较:str1.compare(str2)连接:str1+=str2连接:str1.append(str2)提取:str2=str2.substr(pos1)查找:pos=str1.find(str2)插入:str1.insert(pos1,str...原创 2019-09-22 16:12:55 · 643 阅读 · 0 评论 -
数据结构与算法分析(二)——C++实现链表
虽然实现了,但不是特别好。。。思路1.由于数据来源于文件,故选择在读入数据时建立链表进行存储2.List中存放公有变量head用来存放链表头的地址,List_length存放链表长度,构造函数初始化时直接将建立完成的链表的表头赋给head//List.h#pragma once#include <string>#include <iostream>#incl...原创 2019-10-08 21:14:54 · 205 阅读 · 0 评论