![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
algorithm
文章平均质量分 58
loseheart112
这个作者很懒,什么都没留下…
展开
-
插入排序
void insertion_sort(int a[], int len) { int i, j, x; for (j = 1; j < len; j++) { x = a[j]; i = j - 1; while (i >= 0 && x < a[i]) { a...原创 2010-08-14 11:59:13 · 56 阅读 · 0 评论 -
归并排序
void mergesort(int a[], int p, int r) { int q; if (p < r) { q = (p + r) / 2; mergesort(a, p, q); mergesort(a, q+1, r); merge(a, p, q, r); } } ...原创 2010-08-14 12:04:54 · 69 阅读 · 0 评论 -
堆排序
void heapsort(int a[], int len) { int heap_size, j; build_max_heap(a, len); heap_size = len; for (j = len - 1; j > 0; j--) { swap(&a[0], &a[j]); heap_...原创 2010-08-14 12:10:06 · 68 阅读 · 0 评论 -
快速排序
void quicksort(int a[], int p, int r) { int q; if (p < r) { q = partition(a, p, r); quicksort(a, p, q-1); quicksort(a, q+1, r); } } int partition(...原创 2010-08-14 12:11:52 · 71 阅读 · 0 评论 -
简单的迷宫生成算法(不相交集类)
主要用到了 求并/查找 数据结构,这个结构封装在类DisjSets中。这个结构用于区分等价关系,即将一个集合分为多个等价的子集,然后可以对子集求并,或者查找某一元素所属的子集。基本操作很简单,即union和find两种。 生成迷宫的算法是从各处的墙壁开始(入口和出口除外),不断随机选择一面墙,如果被墙分隔的单元不连通,就拆掉该墙,重复此过程直到开始单元和终止单元连通。入口位于左上角,出口位于右下...原创 2011-08-18 17:26:30 · 288 阅读 · 0 评论 -
希尔排序
#include <iostream> using namespace std; void shellSort(int a[], int len) { int step = len / 2; while (step >= 1) { for (int i = step; i < len; i++) { int toIns...原创 2011-09-05 09:07:30 · 89 阅读 · 0 评论 -
看得懂的KMP算法(转)
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向...原创 2011-09-22 09:40:25 · 148 阅读 · 0 评论 -
二叉树中序遍历递归与非递归算法
#include <iostream> #include <stack> using namespace std; struct Bintree { Bintree *left; Bintree *right; Bintree *parent; int data; Bintree():left(NULL),right(...原创 2011-07-01 17:04:48 · 141 阅读 · 0 评论