题解 | #特殊排序#快排
特殊排序
https://www.nowcoder.com/practice/57f0f528bff149be9580af66f6292430
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int q[N];
void quick_sort(int q[],int l ,int r){
if(l >= r)return ;
int x = q[(l + r) >> 1],i = l - 1,j = r + 1;
while(i < j){
do i ++;while(q[i] < x);
do j --;while(q[j] > x);
if(i < j)swap(q[i],q[j]);
}
quick_sort(q,l,j);
quick_sort(q,j + 1,r);
}
int main(){
int n;
while(cin >> n){
memset(q,0,sizeof(q));
for(int i = 0;i < n;i ++) cin >> q[i];
if(n == 1){
cout << q[0] << endl << "-1";
}
else {
quick_sort(q,0,n - 1);
cout<<q[n-1]<<endl;
for(int i = 0;i < n - 1;i ++)cout << q[i] << ' ';
}
}
return 0;
}
查看9道真题和解析
