基础算法
书山压力大EEE
这个作者很懒,什么都没留下…
展开
-
2.高级排序算法
一. 归并排序法 - Merge Sort基本思想 归并排序(MERGE-SORT) 是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略 (分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 主要来观察一下分治的过程...原创 2018-08-04 22:47:43 · 162 阅读 · 0 评论 -
1. 排序基础
一. 选择排序法 - Selection Sort为什么要学习O(n^2)的排序算法?1. 是基础2. 编码简单,易于实现, 是一些简单情景的首选3. 在一些特殊情况下, 简单的排序算法更有效4. 简单的排序算法思想衍生出复杂的排序算法5. 作为子过程,改进更复杂的排序算法 选择排序 Selection Sort遍历每一个元素,每次遍历都找到被索引元素后面的最小元...原创 2018-08-03 07:19:41 · 215 阅读 · 0 评论 -
3.堆和堆排序
一. 堆的基本存储关于堆这种数据结构的详细阐述,可以参看数据结构系列博文中的‘堆和优先队列’这篇博文。这里会阐述地更加简洁,会提供c++版本的堆实现代码。二. Shift Up向堆中添加元素对于最大堆, 新加入的元素, 如果大于它的父元素, 就和它的父元素互换位置。这步操作称为shift up。只要新元素的父节点比它大, 就会一直做shift up代码实现...原创 2018-08-07 21:19:53 · 153 阅读 · 0 评论 -
4. 二分搜索树
一. 二分查找法对于有序数列,才能使用二分查找法(排序的作用) 递归实现通常思维起来更容易, 但性能不如 while循环法代码#include <iostream>#include <cassert>#include <ctime>using namespace std;// 二分查找法,在有序数组arr中,查找target// 如果...原创 2018-11-10 16:02:31 · 160 阅读 · 0 评论 -
5. 并查集
一. 并查集基础并查集可以处理连接问题 数学中的集合类连接问题网络中节点间的连接状态这里网络是个抽象概念: 用户之间形成的网络二. Quick Find (实现第一版并查集)对于一组数据, 并查集主演支持两个操作:union(p, q) p和q并入同一个集合 find(p) p是属于哪个集合用来回答一个问题isConnected(p, q) p和q是否是同一个...原创 2018-11-11 17:07:54 · 114 阅读 · 0 评论 -
6. 图的基础
一. 图的表示邻接矩阵(Adjacency Matrix)无向图: 0 - 1 / | 3 - 2 邻接矩阵: 0 1 2 3 ...原创 2018-11-16 19:37:19 · 182 阅读 · 0 评论 -
7. 最小生成树
一. 有权图带权图即 在边上附加数据 表示方法对于邻接矩阵,只需将原来的true改为边上所附加的数据 对于邻接表,则以增加数据的方式表示 为了是邻接表和邻接矩阵接口统一, 边上的数据统一封装成Edge类。 邻接矩阵中0的地方,则以空指针表示代码实现邻接矩阵是g[w][v]存放Edge 邻接表是g[v]存放EdgeEdge.h#ifndef INC_...原创 2018-11-17 14:43:23 · 296 阅读 · 0 评论 -
8. 最短路径
一. dijkstra 单源最短路径算法前提条件: 图中不能有负权边 复杂度O(E log(V)) 有向图和无向图都适用算法思路概念说明:松弛操作: 从0到1的最短距离, 上图中 0-1为 5, 但是0-2 + 2-1 为3 这样绕道而行更短, 则用0-2 + 2-1 的路径代替 0-1如上图所示, 起始点为0步骤1. 建立最小索引堆,存放对应点到0点的距离,...原创 2018-11-18 15:57:27 · 194 阅读 · 0 评论