这道题卡了好久了,自己的编译器上能够运行通过,但是提交的时候一直RE还有RTE,恳求各位佬指点一下
#include <stdlib.h>
#define MAX 100005
int GetAverage(int a,int b,int c){
if((a>=b&&b>=c)||(c>=b&&b>=a)){
return b;
}
if((a>=c&&c>=b)||(b>=c&&c>=a)){
return c;
}
if((c>=a&&a>=b)||(b>=a&&a>=c)){
return a;
}
}
int Partition(int A[],int low,int high){
int pivot =GetAverage(A[low],A[high],A[(low+high)/2]);
if(pivot == A[high]){
int temp = A[low];
A[low] = A[high];
A[high] = temp;
}
if(pivot == A[(high+low)/2]){
int temp = A[low];
A[low] = A[(high+low)/2];
A[(high+low)/2] = temp;
}
while(low<high){
while(low<high&&A[high]>=pivot){
high--;
}
A[low]=A[high];
while(low<high&&A[low]<=pivot){
low++;
}
A[high]=A[low];
}
A[low]=pivot;//将下标处作为枢轴元素的最终位置。
return low;
}
void QuickSort(int A[],int low,int high){
if(low<high){
int pivotpos = Partition(A,low,high);
QuickSort(A,low,pivotpos-1);
QuickSort(A,pivotpos+1,high);
}
}
void main(){
int n;
int i = 0;
scanf("%d",&n);
int A[MAX] = {0};
for(i = 0;i < n;i++){
scanf("%d",&A[i]);
}
QuickSort(A,0,n-1);
for(i = 0;i <n-1;i++){
printf("%d ",A[i]);
}
printf("%d\n",A[i]);
}
前三个RE,后两个RTE