#include #include using namespace std; struct data { int id; double value; }a[10010]; void Merge(data A[],int low,int mid,int high,bool flag)//合并函数 { data *B=new data[high-low+1];//申请一个辅助数组 int i=low,j=mid+1,k=0; double x,y; while(i<=mid&&j<=high) //按从小到大存放到辅助数组B[]中 { if(!flag) { x=A[i].value; y=A[j].value; } else { x=A[i].id; y=A[j].id; } if(x>=y) B[k++]=A[i++]; else B[k++]=A[j++]; } while(i<=mid) B[k++]=A[i++];//将数组中剩下的元素放置B中 while(j<=high) B[k++]=A[j++]; for(i=low,k=0;i<=high;i++) A[i]=B[k++]; delete []B;//释放空间 } void MergeSort(data A[],int low,int high,bool flag)//合并排序 { if(low