算法
qq_32913921
这个作者很懒,什么都没留下…
展开
-
归并排序
#include<stdio.h> int a[10000], b[10000];void mergearray(int a[], int first, int mid, int last, int temp[])//temp数组用于临时储存另外一组数 { int i = first, j = mid + 1; int k = 0; while(i <= mid && j <原创 2016-02-19 23:06:09 · 143 阅读 · 0 评论 -
计数排序
#include <stdio.h> //计数排序要求输入的元素是0到k之间 void countSort(int a[], int b[], int array_size, int k)//k是a数组中最大的数 { int c[k+1], i;转载 2016-02-19 23:07:02 · 294 阅读 · 0 评论 -
快速排序
#include <cstdio>void qsort(int a[], int l, int r) { //if(l >= r) return ; if(l < r) { int i = l, j = r, key = a[l];//中值 while (i < j) { while(i < j && a原创 2016-02-19 23:08:14 · 245 阅读 · 0 评论 -
全排列
//未去重全排列 #include <iostream> #include <cstdio>using namespace std;void func(int a[], int m_begin, int m_end)//m_begin表示当前选到第几个了,m_end表示总共多少个数 { int i; if(m_begin + 1 == m_end){ for(i =原创 2016-02-19 23:09:34 · 257 阅读 · 0 评论 -
c++STl的全排列
STL有一个函数next_permutation(),它的作用是如果对于一个序列,存在按照字典排序 后这个排列的下一个排列,那么就返回true且产生这个排列,否则返回false。 #include <cstdio> #include <iostream> #include <algorithm>using namespace std;void permutation(int a[], int len原创 2016-02-19 23:10:16 · 244 阅读 · 0 评论 -
kmp
例如:模式串如果是: A B C D A B D next数组: -1 0 0 0 0 1 2 例如:如果匹配到D失败了就通过next数组递归到前面的C. 用next数组来记录前面已经 匹配成功过的信息,如:尽管退回到C了但前面还是有AB是已经匹配成功的 next[j]的值(也就是k)表示,当P[j] != T[i]时,j指针的下一步移动位置。 #in原创 2016-02-19 23:04:00 · 153 阅读 · 0 评论