- 博客(9)
- 收藏
- 关注
原创 STL(一)
一、简单介绍 STL是C++的标准模板库,它给我们提供了一些常用的数据结构和算法,比如说像向量容器vector,列表list。 STL有下面四个组件: 1、容器 2、迭代器 3、函数对象 4、算法 二、容器 什么是容器? 简单的来说,容器 container 就是包含一组元素的对象。 容器有两种基本类型: 1、顺序容器: 一组相同类型的元素按照线性形式组织起来,比如说向量vector、...
2019-09-08 22:13:19
160
原创 分治法
一、简单介绍 说分治法之前我先来讲讲递归,那么,什么是递归呢?递归是指函数直接或者间接的调用自己,是一种解决问题的常见的方法;一般来说,递归有两个基本要素:第一个就是递归体,即大问题如何分解成小问题;第二个便是边界条件,即什么时候递归结束。 而分治算法的思想就是将一个难以直接解决的问题分成规模较小的相同问题也就是子问题,然后各个击破,分而治之。 由分治法产生的子问题与原问题类型一致,,但是规模却...
2019-08-25 23:53:53
1292
原创 宽度优先搜索
一、简介 宽度优先搜索BFS,它的基本思想是仿树的层次遍历,不过通常都会借助队列实现。 1、初始状态是图中所有顶点未被访问,从图中某个顶点V1出发,访问这个顶点; 2、然后依次访问V1的所有未被访问过的邻接点V2,V3,按照这些顶点被访问的先后顺序一次访问它们的邻接点,直到图中所有和V1有路径相通的顶点全部都被访问过一遍; 3、若还有顶点未被访问,则从中选一个作为起始点,重复上述过程,直到图中所...
2019-08-18 17:12:09
1149
原创 深度优先搜索
一、介绍 什么是深度优先搜索 深度优先搜索(DFS)是图算法的一种,简单的来说,就是对每一个分支路径深入到不能够再深入为止,即该分支路径的最后一个节点,并且呢,每一个节点都要被访问且只能够被访问一次。 基本思路 下面是一张无向图,用它来描述一下DFS: 1、首先我们先定义一个初始节点也就是初始状态,我就用A作为初始节点开始深度优先搜索了,当然也可以用B,D 等。 2、然后从A的邻节点B出发(这里...
2019-08-11 22:58:55
228
1
原创 动态规划
一、简介 基本思想 动态规划是指将所求的问题分解成若干个子问题,并将已经解决的子问题的答案记录起来, 再从这些子问题的答案得到原问题的解。这里要注意的是,子问题在以后不管会不会用到,只要被计算过, 基本步骤 适用范围 ...
2019-08-04 16:28:13
160
原创 和最大子序列
序言 前几天看到这个题,做了一下,提交完后去看了一下其他人写的题解觉得挺有意思的,就把这个写出来了。 一、题目 二、分析问题 看到题目后我们知道要求最大连续子序列之和,既然是连续的而且要最大,那么我们可以对这些整数进行累加求和,加一次判断一次,然后输出最大的和的值 我们把这些数放在一个一维数组里面,用循环进行累加,比较当前的和值与最大和值,若大于,则将当前和值赋值给最大和 若当前和值为负数,则...
2019-07-28 20:36:20
165
原创 二叉树(一)
一、树 什么是树? 简单的来说,树是n(n>=0)个结点的有限集合。当n=0时为空树,任意一个非空树有且仅有一个根结点,其余结点可以分为m个互不相交的有限子集(子树)。 树的一些术语 1、度:一个结点拥有子树的个数就叫度,例如结点C的度为2,而树中最大结点的度叫做树的度,为3 2、叶子结点(终端结点):度为0的结点(结点F,G,H,I,J) 3、分支结点(非终端结点):度不为0的结...
2019-07-22 00:49:31
132
原创 数组排序
序言 数组有有序数组和无序数组,有些情况下我们要把无序数组先变成有序数组才能进行后续的操作,例如我上一篇文章中提到的二分查找,这个时候就需要对数组进行排序了,如何对数组排序?下面给大家介绍几种排序方法。 一、冒泡排序 冒泡排序是指两两比较待排序的数组元素,如果不满足要求,就交换这两元素,直到全部数组元素满足顺序要求即可。 对长度为n的数组进行冒泡排序的步骤如下: 1、第一轮排序:将第一个元素和第...
2019-07-14 21:20:00
285
1
原创 java实现二分查找
二分查找 二分查找也叫做折半查找,它适用于排列有序的数组的查找。 二分查找的基本原理是:对于已经排好序的序列,进过一次比较后,将序列分成两半,然后再在有可能的含有待查找元素部分继续进行查找,继续比较将查找范围缩小,直到找到或者找不到为止。 二分查找过程示意图 相关代码 ...
2019-06-27 14:01:05
243
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅