数据结构与算法
Ankang0320
已经毕业啦
上海交通大学 机械与动力工程学院 智能机器人研究所 17级硕士在读
联系邮箱:1611506326@qq.com
展开
-
DFS(DepthFirstSerach)深度优先搜索
推荐书籍:《数据结构与算法分析--C++语言描述》p.330-p.3441.图论深度优先搜索:对先序遍历的推广。从某个顶点v开始处理,递归地遍历到所有邻接到v的顶点。无向图的连通性:无向图的连通性可由深度优先遍历定义,无向图是连通的等价于,以无向图中任意一个点为顶点,都能通过深度优先搜索访问图中的所有点。双连通性:一个连通的无向图,如果删除任意节点后,有向图仍为连通的,则称之为双...原创 2019-05-28 19:54:00 · 284 阅读 · 0 评论 -
算法设计技巧-贪婪算法、分治算法、动态规划等
1.贪婪算法(greedyalgorithm)贪婪算法的核心思想是将问题分阶段进行,在每个阶段选择当前最优的,而不考虑对之后的影响。这意味着选择是局部最优的,我们希望贪婪算法结束时我们希望局部最优等于全局最优,否则得到的只是次最优解。一个典型的问题是货币找零问题,假设现在有面值10元,5元,1元的钞票,要选出最少的钞票组成23元,那么方法是,从面值最大的开始重复选取,直到超过所要组成的面值。...原创 2019-05-31 10:38:42 · 937 阅读 · 0 评论 -
排序算法-原理及C++实现
源代码github:无堆排序版本 更新版本1.排序分类比较排序和非比较排序 根据是否进行比较(<,>)分为:比较排序和非比较排序常见的排序算法都是比较排序,非比较排序包括计数排序、桶排序和基数排序,非比较排序对数据有要求,因为数据本身包含了定位特征,所有才能不通过比较来确定元素的位置。比较排序的时间复杂度通常为O(n2)或者O(nlogn),比较排序的时间复杂度下界就...原创 2019-05-22 20:57:51 · 600 阅读 · 0 评论 -
队、列栈、堆(优先队列)-原理及C++实现
1.优先队列(堆)heap priority_queue1.1理论知识及实现方法堆(二叉堆)堆是一棵完全二叉树,完全二叉树转换为顺序储存(数组)时不浪费储存空间,因此堆可以由数组储存。小顶堆:最小元在根节点,对于每一个节点x,x的父节点的值小于等于x的值。大顶堆:最大值在根节点,对于每一个节点x,x的值大于等于子节点的值。堆排序的实现方式就是使用堆这种数据结构。插入节点:在可用位置(树...原创 2019-05-22 16:26:28 · 430 阅读 · 1 评论 -
图论算法
推荐书籍《数据结构与算法分析--C++语言描述》p.304-p.316 源代码1.图论基本知识点图:图有顶点和边构成。图用符号G表示,顶点用符号V表示,边(或称弧)用符号E表示。G(V,E)表示由顶点集合V和边集合E构成的图。其中边由两个顶点构成,若两个顶点构成的边无序,如v-w和w-v相同,则称无向图,否则称有向图。若(v,w)构成一条边,则称w邻接到v;若是无向图,则w邻接到v且v邻...原创 2019-05-25 18:49:13 · 1406 阅读 · 0 评论 -
C++STL容器及其他类型使用中的一些问题
1.Vector删除重复元素 源代码:https://github.com/AnkangH/CSDN/tree/master/STL 这里介绍分为三种方法,Unique,Set和Map方法。Unique方法要求先对输入数组进行排序,删除重复元之后会改变相对顺序,输出为有序序列;Set方法因此储存结构有序,因此结果也为有序序列;Map方法可不改变原数组的相对顺序。...原创 2019-05-24 16:27:40 · 601 阅读 · 0 评论 -
利用栈实现计算器(calculator)三:针对无空格输入的计算器实现
1.简述题目:[编程题]计算器https://www.nowcoder.com/questionTerminal/dcc9647a2efd4e0785593895728f65b7?toCommentId=3050502已通过:https://www.nowcoder.com/profile/866249541/codeBookDetail?submissionId=47551750git...原创 2019-05-20 19:00:33 · 473 阅读 · 1 评论 -
利用栈实现计算器(calculator)二:十进制数字的加减乘除
1.简述上一篇文章里将科学计算器的实现分为了两部分:1.中缀算术表达式改写为后缀算术表达式 2.计算后缀算术表达式并且给出了个位数的加减乘基本的实现。这一篇将利用牛客网的编程题目,给出后缀运算表达式对于十进制数字(可以多于一位)的加减乘除(整形除法)运算。题目:[编程题]Emacs计算器https://www.nowcoder.com/questionTerminal/1a92fbc77...原创 2019-05-20 16:38:34 · 1051 阅读 · 0 评论 -
利用栈实现计算器(calculator)一:基本思路及实现
github:https://github.com/AnkangH/CSDN/blob/master/%E5%88%A9%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E8%AE%A1%E7%AE%97%E5%99%A8/01.%E5%9F%BA%E6%9C%AC%E6%80%9D%E8%B7%AF%E5%8F%8A%E5%88%9D%E6%AD%A5%E5%8A%9F%...原创 2019-05-20 15:30:27 · 22016 阅读 · 6 评论 -
数据结构-二叉树
源代码https://github.com/AnkangH/CSDN/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84-%E4%BA%8C%E5%8F%89%E6%A0%91二叉树定义及性质树的定义n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1)有且仅有一个特定的称为根(Root)的结点;2)当n>...原创 2019-05-09 15:28:16 · 290 阅读 · 0 评论 -
数据结构与算法题目及C++解答
前言题目主要按照类型进行整理,包括leetcode,nowcoder等网站,对于可以使用多种方法的题目,不重复列举。推荐书籍《数据结构与算法分析--C++语言描述》第四版。本文中所有源代码及博客中其他文章的VS源代码均在github:https://github.com/AnkangH,根据名称检索即可。1.排序算法 SortAlgorithm排序算法的源码见博客内排序算法的文章。...原创 2019-06-03 00:47:45 · 12705 阅读 · 0 评论