码迷,mamicode.com
首页 > 编程语言 > 详细

啊哈!算法>>

时间:2016-08-08 19:17:17      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

第 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);
    }
    返回
}

 

  

  

      

 

技术分享

 

 

  

 

  

啊哈!算法>>

标签:

原文地址:http://www.cnblogs.com/IDRI/p/5750312.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!