数据结构
文章平均质量分 73
皮小猪的时光
这个作者很懒,什么都没留下…
展开
-
贪心算法
1 活动安排问题#include <iostream>#include <vector> // vector#include <iterator> //ostream_iterator#include <algorithm> //stable_sortusing namespace std;// 活动信息class Activity{public: Activity(int原创 2016-03-07 10:34:37 · 375 阅读 · 0 评论 -
快速排序
快速排序是基于 分治法 思想的一种排序算法,由于排序效率在同为 O(N*logN) 的几种排序方法中效率较高,因此经常被采用。原创 2016-05-04 15:50:18 · 445 阅读 · 0 评论 -
堆排序
堆排序 : 是指利用堆这种数据结构所设计的一种排序算法。堆可以视为一颗完全二叉树。堆的特点堆可以分为大顶堆和小顶堆。大顶堆 : 任一结点总是大于其左右孩子结点。所以根节点存储的将是最大值。小顶堆 : 任一结点总是小于其左右孩子结点。所以根节点存储的将是最小值。虽然堆是树的结构,但是堆可以被视为完全二叉树。根据完全二叉树的特点,通常堆是通过一维数组来存储的。因为当堆中n个元素对应数组的1-n序原创 2016-04-24 11:15:27 · 1211 阅读 · 0 评论 -
基本排序算法
冒泡排序是一种简单直观的排序算法。它重复地走访要排序的数列,每次比较两两相邻的两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。交换的目的是要把最小或者最大的值放到未排序数列部分的尾部。原创 2016-05-04 17:02:43 · 577 阅读 · 0 评论 -
最短路径—flody
flody 算法的作者是罗伯特·弗洛伊德 。记得以前偶尔都能听到“弗洛伊德曾经说过。。。”的话,很好奇就百度了下,原来有多个名人都叫这名,哈哈,还有个弗洛伊德是研究心理学的。。西格蒙德·弗洛伊德算法思路用于解决任意两点间的最短路径的一种算法。算法的时间复杂度为O(n^3),空间复杂度为O(n^2)。基本思想可以通过一个类比来描述。两个城市之间的直达火车并不一定是最快的,有的时候通过转车,反而能缩短原创 2016-04-18 10:00:12 · 2509 阅读 · 0 评论 -
深度优先搜索
深度优先,顾名思义,只要有路,则一条路走到底,然后回溯,看之前的叉路口是否还有路可选。基本概念深度优先搜索(depth-first-search)是一种用于遍历或搜索 树或图的算法。算法思路: no picture no bb! 一图抵千言!如上是一个有向图。假设我们需要找到从1到4结点的路径。那么从结点1开始遍历,然后递归的遍历所有与1相邻的结点。所以,第一,我们需要构建图的邻接矩阵(建模很原创 2016-04-16 11:04:32 · 2996 阅读 · 0 评论 -
广度优先搜索
广度优先搜索算法(Breadth First Search),又称为”宽度优先搜索”或”横向优先搜索”,简称BFS。算法思路算法思想:从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后再分别从这些邻接点出发依次访问它们的邻接点(邻接节点的邻接节点)。换句话说,广度优先搜索遍历图的过程是以v为起点,由近至远,依次访问和v有路径相通且路径长度为1,2…的顶点。1 无向图的广度优原创 2016-04-17 14:26:09 · 2208 阅读 · 0 评论 -
全排列
往下阅读之前,先回想一下深度搜索的思想是什么。因为全排列的递归实现就是应用了深度搜索。原创 2016-04-18 15:50:46 · 1870 阅读 · 2 评论 -
并查集
并查集:也叫 合并 - 查询集合 。常用于对一组元素进行类别划分(归类,划分集合)。原创 2016-04-25 16:32:53 · 2343 阅读 · 0 评论 -
暴力枚举
题目如下:解法 11、用一个10维数组match记录 构建每个数字所需要的 火柴数。 比如match[0] = 6 : 表示构建0需要6根火柴。2、用一个二维数组res 存储 某行 + 某列 需要的火柴数目。比如: res[0][1] = 14 : 表示 0 + 1 = 1 ;这个等式需要消耗14根火柴3、定义一个结构体数组,结构体如下struct mat{ int row; //行号原创 2016-04-18 12:08:43 · 1913 阅读 · 0 评论 -
桶排序
桶排序,是基于不比较的排序算法。时间复杂度为O(1),空间复杂度为O(n)。算法思路按未排序数组中最大数值 maxva l,建立一个容量为 maxval + 1 的临时数组res遍历未排序数组中的每一个元素,通过res数组记录每个数值出现的次数打印res数组(数字i出现的次数为res[i])C 版本#include <stdio.h>#define MAX 13int main(){原创 2016-04-17 11:46:17 · 2326 阅读 · 0 评论 -
字典树Trie
字典树字典树——Trie树,又称为前缀树(Prefix Tree)、单词查找树或键树,是一种多叉树结构。原创 2016-04-26 11:01:37 · 9292 阅读 · 0 评论 -
栈 stack
栈(stack)是限定仅在表尾进行插入和删除操作的线性表。原创 2016-05-09 19:56:13 · 3983 阅读 · 1 评论