题解 | #特殊排序#快排

特殊排序

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;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务