算法学习
DeffWHU
这个作者很懒,什么都没留下…
展开
-
模运算------x的y次方再模n
问题描述:ax mod n (a的x次方再模n)求结果,对小数量的求模一般数据类型可以应付,但是当x很大时就会产生很大的中间结果。我们希望加速运算并且不产生大结果。 我们知道模运算满足分配率,(a*b)mod n = ((a mod n)*(b mod n)) mod n,所以我们将指数运算同模运算结合起来,将指数运算作为一系列的乘法运算,对于每次指数运算做一次模运算,(a*a*a*a*a*a*原创 2012-11-30 01:13:11 · 6503 阅读 · 0 评论 -
败者树 和 胜者树---数组实现
胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。 胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。在k路归并排序中经常用到。原创 2012-11-30 01:39:12 · 4116 阅读 · 1 评论 -
最长公共子序列------动态规划
#include #include #include void LCS_LEN(int m,int n,char X[],char Y[],int c[8][7],int b[8][7]) { int i , j; for(i = 0; i <= m; i++) c[i][0] = 0; for(i = 0; i <= n; i++)原创 2012-12-03 00:43:14 · 481 阅读 · 0 评论 -
矩阵链乘--动态规划15.2
#include #include #include #define N 5 void Matrix_chain_order(int p[],int m[][N+1],int s[][N+1]) { int i,l,j,k,tp; for(i = 1;i <= N;i++) m[i][i] = 0; for(l = 2;l <= N;l++)原创 2012-12-02 02:45:50 · 554 阅读 · 0 评论 -
One Algorithm A Day --- INSERTION-SORT--算法入门
直接插入排序: #include #include #define LEN 6 typedef int RecType; void InserSort(RecType R[],int n) //直接插入法 { int i, j; RecType temp; for(i = 1; i < n; i++) { temp =原创 2012-11-21 01:51:34 · 849 阅读 · 1 评论 -
One Algorithm A Day --- MERGESORT--分治法
分治法--归并排序 #include #include #define Len 20 typedef int RecType; void Merge(RecType A[],int p,int q,int r) { RecType *R1; int i = p,j = q + 1,k = 0; R1 = (RecType*)malloc((r-p+1)*sizeo原创 2012-11-22 02:01:15 · 567 阅读 · 0 评论 -
堆排序
#include #include #include int PARENT(int i) //父节点 { return floor(2/i); } int LEFT(int i) //左孩子 { return 2*i; } int RIGHT(int i) //右孩子 { ret原创 2012-12-07 14:12:06 · 542 阅读 · 0 评论