xbns.net
当前位置:首页 >> C++算法,分治法实现归并 >>

C++算法,分治法实现归并

参考如下 //分治法实现归并排序 #include using namespace std; #define SIZE 10 void merge(int array[],int first,int mid,int last) //合并 { int new_arr[SIZE],i,j,k=first; memset(new_arr,0,SIZE); for (i = first,j = mid + 1;(i

你思路是错的 快排的每一部分 是将待排序的序列中随便挑一个 比他小的放到左边 大的放到右边 自己放在中间 然后递归解决左边那串序列和右边那串 怎么可能刚好左边那串和右边那串长度都是原来的一半呢?

#include using namespace std; void TwoMerge(int A[], int s, int m, int e) { int R[100]; int k = s; int begin1 = s; int end1 = m; int begin2 = m + 1; int end2 = e; while(k end1) R[k++] = A[begin2++]; else if(begin2 > end2) R[k++...

#include #include #include using namespace std; typedef int* IntPtr; void Merge(int A[],int p,int q,int r) { int M=999999999; int n1,n2; n1=q-p+1; n2=r-q; IntPtr L,R; L=new int[n1+1]; R=new int[n2+1]; int i,j,k; for(i=1;i

STL看起来是使用了面向对象,但实际上是大部分都是面向过程了。 STL的很多算法,就拿sort函数来说吧。 void sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp);只要数据结构的跌代器是随机访问的就可以使用...

1 用冒泡法 很简单 2 循环计算 定义一个int i = 0; 没循环一次 i++;最后i就是运算的次数!

#include #include #include #include using namespace std; const int inf=(1>1; int ha,la,hb,lb; int cnt_ha,cnt_la,cnt_hb,cnt_lb; Bin(l,mid,ha,la,cnt_ha,cnt_la); Bin(mid+1,r,hb,lb,cnt_hb,cnt_lb); if(ha>hb) _max=ha,cnt_max=cnt_ha; ...

#include #include #include #include using namespace std; const int MAX=100; int max_(int a,int b){return a>b?a:b;} int min_(int a,int b){return a>1; return max_(findMax(a,s,mid),findMax(a,mid,t)); } int findMin(int a[],int s,in...

我有KINDLE支持的格式的英文原版的。你要嘛,KINDLE可以看,别的不行。

http://wenku.baidu.com/view/2869ce80ec3a87c24028c46f.html 这里面有C语言实现的上面的两种算法,如果运行不了的话,你可以改改,如果运行成功了的话,你可以根据这个来写出另一个算法的代码。

网站首页 | 网站地图
All rights reserved Powered by www.xbns.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com