啊哈!算法>>

第 1 章 一大波数正在靠近——排序 ................................................................................................... 1
第 1节 最快最简单的排序——桶排序 ......................................................................................... 2
第 2节 邻居好说话——冒泡排序 ................................................................................................. 7
第 3节 最常用的排序——快速排序 ........................................................................................... 12
第 4节 小哼买书 .......................................................................................................................... 20
第 2 章 栈、队列、链表 ..................................................................................................................... 25
第 1节 解密 QQ号——队列 ....................................................................................................... 26
第 2节 解密回文——栈 .............................................................................................................. 32
第 3节 纸牌游戏——小猫钓鱼 ................................................................................................... 35
第 4节 链表 .................................................................................................................................. 44
第 5节 模拟链表 .......................................................................................................................... 54
第 3 章 枚举!很暴力 ......................................................................................................................... 57
第 1节 坑爹的奥数 ...................................................................................................................... 58
第 2节 炸弹人 .............................................................................................................................. 61
第 3节 火柴棍等式 ...................................................................................................................... 67
第 4节 数的全排列 ...................................................................................................................... 70
第 4 章 万能的搜索 ............................................................................................................................. 72
第 1节 不撞南墙不回头——深度优先搜索 ............................................................................... 73
第 2节 解救小哈 .......................................................................................................................... 81
第 3节 层层递进——广度优先搜索 ........................................................................................... 88
第 4节 再解炸弹人 ...................................................................................................................... 95
第 5节 宝岛探险 ........................................................................................................................ 106
第 6节 水管工游戏 .................................................................................................................... 117
第 5 章 图的遍历 ............................................................................................................................... 128
第 1节 深度和广度优先究竟是指啥 ........................................................................................ 129
第 2节 城市地图——图的深度优先遍历 ................................................................................. 136
啊哈!算法
8
第 3节 最少转机——图的广度优先遍历 ................................................................................. 142
第 6 章 最短路径 ............................................................................................................................... 147
第 1节 只有五行的算法——Floyd-Warshall ............................................................................ 148
第 2节 Dijkstra算法——通过边实现松弛 ............................................................................... 155
第 3节 Bellman-Ford——解决负权边 ....................................................................................... 163
第 4节 Bellman-Ford的队列优化 .............................................................................................. 171
第 5节 最短路径算法对比分析 ................................................................................................. 177
第 7 章 神奇的树 ............................................................................................................................... 178
第 1节 开启“树”之旅 ............................................................................................................. 179
第 2节 二叉树 ............................................................................................................................. 183
第 3节 堆——神奇的优先队列 ................................................................................................. 185
第 4节 擒贼先擒王——并查集 ................................................................................................. 200
第 8 章 更多精彩算法 ....................................................................................................................... 211
第 1节 镖局运镖——图的最小生成树 ..................................................................................... 212
第 2节 再谈最小生成树 ............................................................................................................. 219
第 3节 重要城市——图的割点 ................................................................................................. 229
第 4节 关键道路——图的割边 ................................................................................................. 234
第 5节 我要做月老——二分图最大匹配 ................................................................................. 237
第 9 章 还能更好吗——微软亚洲研究院面试 ................................................................................ 243

1.1桶排序---O(N+M)

1.2冒泡排序---O(N^2)

1.3快速排序---O(NlogN)

  1,找基准数 2,先从右往左找到一个小于6的数,再从左往右找一个大于6的数,交换

1.4 去重、排序

  第一种方法:桶排序、

  第二种方法:先排序、后去重,冒泡排序或者快速排序

2.1 队列

  线性结构,只允许在队列的首部 head 进行删除,在队列的尾部 tail 插入

  例子:买票;先进先出 FIFO

  结构体类型:

struct queue
{
int data[100];//队列的主体,用来存储内容
int head;//队首
int tail;//队尾
};

2.2 栈

  例子:小桶放球;后进先出

  top:指向栈顶的变量

  用途:判断回文词,

2.4 链表

  C语言中,可以使用 指针和函数malloc来实现。

  也可以用数组模拟链表

    结构体 node,两个成员,data和指针

struct node *head;
head = NULL;//头指针为空

struct node *p;
//动态申请一个空间,用来存放一个结点,并用临时指针p指向这个结点
p = (struct node *)malloc(sizeof(struct node));

scanf("%d",&a);
p->data = a;//将数据存储到当前结点的data域中
p->next = NULL;//设置当前结点的后继指针指向空,也就是当前结点的下一个结点为空

    ->叫做结构体指针运算符,也是用来访问结构体内部成员的。因为此处p是一个指针,所以不能使用.号访问内部成员。

2.5 模拟链表

  用数组模拟链表

  两个数组,data 和 left

3.1 枚举

3.2 炸弹人

  使用数组模拟地图

3.3 火柴棍模式

  核心是 求方程的解,

3.4 数的全排列

4.1 深度优先搜索 (Depth First Search, DFS)

  基本模型

void dfs(int step)
{
    //判断边界
    //尝试每一种可能
    for(i=1;i<=n;i++)
    {
            继续下一步 dfs(step+1);
    }
    返回
}

  

  

      

  

  

时间: 2024-10-20 19:24:05

啊哈!算法>>的相关文章

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

密码算法详解——AES

0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准. 根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128.AES-192和AES-256.本文主要对AES-128进行介绍,另外两种的思路基本一样,只是轮数会适当增加. 1 算法流程 AES加解密的流程图如下: AES加密过程涉及到4种操作:字节替代(SubBytes).行移位(ShiftRows).列混淆(MixCo

矩阵乘法的Strassen算法详解

题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p. 值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵交换相乘后,结果变了: 下面咱们来具体解决这个矩阵相乘的问题. 解法一.暴力解法 其实,通过前面的分析

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,

算法 希尔排序

希尔排序 Shell Sort 介绍: 希尔排序(Shell Sort)也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本. 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序.因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率比直接插入排序有较大提高. 执行流程: 首先

算法 排序NB二人组 堆排序 归并排序

参考博客:基于python的七种经典排序算法     常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储存关系和对它们的操作方法.树形结构就像自然界的一颗树的构造一样,有一个根和若干个树枝和树叶.根或主干是第一层的,从主干长出的分枝是第二层的,一层一层直到最后,末端的没有分支的结点叫做叶子,所以树形结构是一个层次结构.在<数据结构>中,则用人类的血统关系来命名,一个结点的分枝叫做该结点的"

【机器学习实战】第2章 K-近邻算法(k-NearestNeighbor,KNN)

第2章 k-近邻算法 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script> KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法主要是用来进行分类的. KNN 场景 电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢? 动作片:打斗次数更多 爱情片