算法
whiteriver15
这个作者很懒,什么都没留下…
展开
-
最大子列和问题
法1:暴力求解int MaxSum1( int a[], int n){ int thisSum,maxSum = 0; int i,j; for ( i = 0; i < n; i++) { thisSum = 0; for ( j = i; j < n ;j++) {原创 2015-09-04 12:11:31 · 208 阅读 · 0 评论 -
求最大公约数
原理:辗转相除法1.迭代求解 int gcd(int a, int b) { a>b?a:b; while (b != 0) { int t = a % b; a = b; b = t; } return a; }2.递归求解 int gcd(int a, in原创 2015-09-05 02:01:29 · 201 阅读 · 0 评论 -
求一元多项式
求一元多项式,例如:f(x)=a0+a1*x+a2*x^2+a3*x^4+...+an*x^n =a0+x*( a1+X*( a2 + x*( a3+x(...(an-1 + xan ) ) ) ) double f(int n,int array[],double x) { int i原创 2015-09-05 02:27:43 · 380 阅读 · 0 评论 -
快速排序
1.原理: Divide: 随便选一个数作为基准数,把数组分成两个子列 Conquer: 分别两个子列进行排序2.代码: void quick_sort(int s[],int l,int r) { if(l < r) { int i = l, j = r, x = s[l]; //把数组的第一项定义为基准数,即把第原创 2015-09-05 17:06:58 · 224 阅读 · 0 评论 -
查找第 k 大的元素
1.原理: 运用快速排序的方法,把数组s[i,j]分成两个子列,判断基准数在数组的位置 p 和(k-1)的大小; 若 p == k-1,则 s[p] 就是第 k 大的数; 若 p 若 p > k-1, 则在 s[i,p-1] 中查找;2.代码: void find_Kth(int a[],int l,i原创 2015-09-05 21:20:14 · 322 阅读 · 0 评论 -
快速模取幂
计算 a^b mod c法1:直接求解 [cpp] view plaincopyint ans =1; for i=1 to b ans = ans * a; ans = ans % c; 法2:a^b mod c = ( a mod c ) ^ b mod c原创 2015-09-05 01:52:12 · 286 阅读 · 0 评论 -
二分查找
void find_number(int array[], int len, int num) { int left = 0, right = len - 1; while (left <= right) { int mid = (left + right) / 2; if (array[mid] < num)原创 2015-09-05 02:04:58 · 260 阅读 · 0 评论 -
归并排序
1.原理 Divide: 把数组分成两个子序列 Conquer: 分别对每个 子序列进行排序 Combin: 把排好序的两个子序列进行合并2.代码: void sort (int s[],int l,int r) { if ( l < r) { int原创 2015-09-05 17:00:12 · 198 阅读 · 0 评论