分治
baother0
这个作者很懒,什么都没留下…
展开
-
快速排序(1)
#include "stdio.h"//最朴素的快速排序,使用的是分治的策略//循环不变式为:下标index在[q,i]时,有A[index] pivot,下标index在[j+1,r-1],A[x]还没有和pivot比较。int PARTITION (int *A,int q,int r) {//下标从1开始 int i = q - 1; int j; int pivot = A原创 2013-09-06 21:51:26 · 648 阅读 · 0 评论 -
最大连续整数和
#include "stdio.h"#define MAX 1000int A[MAX];int main () { int i; int j; int k; int maxmum; int sum; for (i = 1;i <= MAX;i++) { A[i] = i; } maxmum = A[1]; for (i = 1;i <= MAX;i++) { fo原创 2013-06-30 16:09:01 · 858 阅读 · 0 评论 -
二分查找
#include "stdio.h"int bsearch (int *A,int x,int y,int v) { int m; while (x < y) {//[x,y) m = x + (y - x) /2; // printf ("[%d,%d)=%d\n",x,y,m); if (A[m] == v) { return m; }else if (A[m]原创 2013-07-01 16:12:26 · 541 阅读 · 0 评论 -
归并排序
其实归并排序使用了分治法的思想。有许多的算法在结构上都是递归的,为了解决一个给定的问题,算法要一次或者多次的调用其自身来解决相关的子问题。这些算法通常采用的是分治策略:将原问题划分成n个规模较小的结构与原问题相似的子问题;递归的解决这些子问题,然后再合并其结果,就得到了原问题的解。分治模式在每一程递归上都有三个步骤:分解:(Divide):将原问题分解成为一系列的子问题;解决(原创 2012-11-30 21:37:15 · 420 阅读 · 0 评论