#include <stdio.h>
#define dataLen 1000
int merge(int data[dataLen], int start, int mid, int end){
int result[dataLen];
int k=0;
int i=start;
int j=mid+1;
while(i<=mid && j<=end){
// 升序排序
if(data[i]<data[j]){
result[k++] = data[i++];
}else{
result[k++] = data[j++];
}
}
// 处理剩余的部分
if(i<=mid){
while(i<=mid)
result[k++] = data[i++];
}
if(j<=end){
while(j<=end)
result[k++] = data[j++];
}
//
for(i=start,j=0; j<k; i++,j++){
data[i] = result[j];
}
return 0;
}
int mergeSort(int data[dataLen], int start, int end){
if(start>=end)
return 0;
int mid = (start+end)/2;
mergeSort(data, start, mid);
mergeSort(data, mid+1, end);
merge(data, start, mid, end);
return 0;
}
int main() {
int n;
int data[dataLen];
while(scanf("%d",&n) != EOF){
if(n==1){
int temp;
scanf("%d", &temp);
printf("%d\n", temp);
printf("%d", -1);
return 0;
}
for(int i=0; i<n; i++){
scanf("%d", &data[i]);
}
// 排序
mergeSort(data, 0, n-1);
// 输出
printf("%d\n", data[n-1]);
for(int i=0; i<n-1; i++){
printf("%d ", data[i]);
}
}
return 0;
}
KY210 | 特殊排序
最新推荐文章于 2025-08-24 11:06:10 发布