分治
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 · 744 阅读 · 0 评论 -
最大连续整数和
#include "stdio.h" #define MAX 1000 int 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 · 954 阅读 · 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 · 612 阅读 · 0 评论 -
归并排序
其实归并排序使用了分治法的思想。 有许多的算法在结构上都是递归的,为了解决一个给定的问题,算法要一次或者多次的调用其自身来解决相关的子问题。这些算法通常采用的是分治策略: 将原问题划分成n个规模较小的结构与原问题相似的子问题;递归的解决这些子问题,然后再合并其结果,就得到了原问题的解。 分治模式在每一程递归上都有三个步骤: 分解:(Divide):将原问题分解成为一系列的子问题; 解决(原创 2012-11-30 21:37:15 · 481 阅读 · 0 评论
分享