首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

出错了

2012-10-17 
出错了,求助下面的程序不出正确结果??此程序算是应用了分治法吗??求指点!//求一组数据中最大的两个数和最

出错了,求助
下面的程序不出正确结果??此程序算是应用了分治法吗??求指点!
//求一组数据中最大的两个数和最小的两个数
#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

热点排行