出错了,求助
下面的程序不出正确结果??此程序算是应用了分治法吗??求指点!
//求一组数据中最大的两个数和最小的两个数
#include<iostream>
using namespace std;
int main()
{void MergeSort(int r[],int r1[],int,int);
int n,i,a[100],a1[100];
cout<<"请想好一组整数,并输入该组数据中数据的总个数:";
cin>>n;
cout<<"请依次输入这"<<n<<"个整数:";
for(i=0;i<n;i++)
cin>>a[i];
MergeSort(a,a1,0,n-1);
cout<<"该组数据中"<<endl<<"最大的两个数据为"<<a[n-1]<<"和"<<a[n-2]<<endl<<"最小的两个数据为"<<a[0]<<"和"<<a[1]<<endl;
return 0;
}
void Merge(int r[],int r1[],int s,int m,int t)//一次归并算法
{int i,j,k;
i=s;j=m+1;k=s;
while(i<=m&&j<=t)
{if(r[i]<=r[j])r1[k++]=r[i++];
else r1[k++]=r[j++];
}
if(i<=m)while(i<=m)
r1[k++]=r[i++];
else while(j<=t)
r1[k++]=r[j++];
}
void MergeSort(int r[],int r1[],int s,int t)//归并排序的递归算法
{if(s==t)r1[s]=r[s];
else
{int m;
m=(s+t)/2;
MergeSort(r,r1,s,m);//归并排序前半个子序列
MergeSort(r,r1,m+1,t);//归并排序后半个子序列
Merge(r1,r,s,m,t);
}
}
[解决办法]
http://blog.csdn.net/v_july_v/article/details/6403777