
Algorithm
iwifigame
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法——总览
<br />http://zh.wikipedia.org/zh-cn/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95<br />http://baike.baidu.com/view/297739.htm原创 2011-03-01 11:34:00 · 344 阅读 · 0 评论 -
全排列
#include void perm(char* list, int k, int m);void swap(char *a, char *b);int main(int argc, char** argv) { int i; char* list = argv[1]; while (scanf("%d", &i) != EOF) { p原创 2011-06-11 20:27:00 · 422 阅读 · 0 评论 -
二分查找
#include int binarysearch(int a[], const int i, int n);int main(int argc, char** argv) { int a[20] = {1,2,3,4,5,6,7,8,9,10}; printf("%d", binarysearch(a, 5, 10));}int binarysearch(in原创 2011-06-11 20:13:00 · 409 阅读 · 0 评论 -
斐波那契数列 Hanoi 塔 分治法思想的体现
#include int fibonacci(int n);int main(int argc, char** argv) { int count; while (scanf("%d", &count) != EOF) { printf("%d", fibonacci(count)); }}int fibonacci(int n) {原创 2011-06-11 20:24:00 · 911 阅读 · 0 评论 -
合并排序,递归与非递归版本 ,自然全并排序
#include #include #include void merge_sort(int* a, int* tmp, int left, int right);void merge(int* a, int* b, int left, int middle, int right);void copy(int *a, int *tmp, int left, int right)原创 2011-06-11 20:27:00 · 513 阅读 · 0 评论 -
深入理解深度优先搜索
伪代码如下:DFS(G)for each vertex u _ V [G]do color[u] ← WHITEπ[u] ← NILtime ← 0for each vertex u _ V [G]do if color[u] = WHITE then DFS-VISIT(u)DFS-VISIT(u)color[u] ← GRAY White vertex u has just been discovered.time ← time +1d[u] ti原创 2011-02-16 17:06:00 · 806 阅读 · 0 评论 -
图算法总览
1. 图的基本算法: A. 图的表示:邻接表和邻接矩阵; B. 广度优先搜索:搜索计算出来的s到各顶点的距离为最短路径。 BFS(G, s) for each vertex u 属于 V[G] - {s} do color[u] = WHITE d[u] = 无穷大 p[u] = NIL color[s] = GRAY d[s] = 0 p[s] = NIL Q = NULL ENQUEUE(Q, s) while Q != N原创 2011-03-03 17:06:00 · 425 阅读 · 0 评论 -
深入理解动态规划思想——装配线调度、矩阵链乘法、最长公共子序列、最优二叉查找树
<br /> 动态规划原创 2011-03-03 12:02:00 · 479 阅读 · 0 评论 -
分治法——思想到使用——归并排序、快速排序
分而治之。方法一般是利用递归。分治和递归一般同时出现。 分治模式在第一层递归上都有三个步骤: 分解(Divide):将原问题分解成一系列子问题; 解决(Conquer):递归地解决名子问题。若子问题足够小,则直接求解; 合并(Combine):将子问题的结果合并成原问题的解。分治法所能解决的问题一般具有以下几个特征: 1) 该问题的规模缩小到一定的程度就可以容易地解决 2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结原创 2011-03-01 10:41:00 · 629 阅读 · 0 评论 -
快速排序 普通和随机版本
#include #include template void quick_sort(Type a[], int left, int right) { if (left < right) { int p = partion(a, left, right); quick_sort(a, left, p - 1); quick原创 2011-06-11 20:29:00 · 591 阅读 · 0 评论