高精排序有问题(只能排同一位数,如 894 513 744 156 594)
查看原帖
高精排序有问题(只能排同一位数,如 894 513 744 156 594)
661600
stopIntferingThePoll楼主2022/9/25 18:46

代码:

#include<bits/stdc++.h>
using namespace std;
#define ull long long int
ull n;
string s[10*10*10*10*10];

ull str_to_int(string s){
	ull cheng = pow(10, s.size()), jg = 0;
	for(ull i=s.size(); i>=0; i--){
		jg += int(s[i] - 48) * cheng;
		cheng /= 10;
	}
	return jg;
}

void swap(string &a, string &b){
	int n = max(a.length(), b.length());
	for(ull i=0; i<n; i++){
		char temp;
		temp = a[i];
		a[i] = b[i];
		b[i] = temp;
	}
}

void qsort(ull l, ull r){
	if(l >= r){
		return;
	}
	ull m = str_to_int(s[(l+r)/2]);
	ull i = l, j = r;
	while(i <= j){
		while(str_to_int(s[i]) < m){
			i++;
		}
		while(str_to_int(s[j]) > m){
			j--;
		}
		if(i <= j){
			swap(s[i++], s[j--]);
		}
	}
	qsort(l, j);
	qsort(i, r); 
} 

int main(){
	cin >> n;
	for(ull i=0; i<n; i++){
		cin >> s[i];
	}
	qsort(0, n-1);
	for(ull i=0; i<n; i++){
		cout << s[i] << " ";
	}
	return 0;
}
2022/9/25 18:46
加载中...