文章

79

粉丝

221

获赞

46

访问

202.2k

头像
大整数排序
P1412 华中科技大学机试题
发布于2023年3月28日 20:40
阅读数 2.1k

#include <iostream>
#include <string>
using namespace std;
int Comp(string a1, string a2) {
	if (a1.size() != a2.size())
		return a1.size() - a2.size();
	for (int i = 0; i < a1.size(); i++)
		if (a1[i] != a2[i])
			return a1[i] - a2[i];
	return 0;
}
void BubbleSort(string* a, int n) {
	for (int i = 0, flag = 0; i < n; i++,flag=0) {
		for (int j = 1; j < n - i; j++)
			if (Comp(a[j], a[j - 1]) < 0) {
				swap(a[j], a[j - 1]);
				flag = 1;
			}
		if (flag == 0)
			break;
	}
}
int main() {
	int n;
	while(cin >> n){
		cin.ignore();
		string* a = new string[n];
		for (int i = 0; i < n; i++)
			getline(cin, a[i]);
		BubbleSort(a, n);
		for (int i = 0; i < n; i++)
			cout << a[i] << endl;
	}
	return 0;
}

整体思路:

整体思路很简单,使用字符串数组存储n个数,使用冒泡排序对n个数进行排序,关键为若何对比以字符串存储的两个整数。

对比以字符串存储的两个整数:

  1. 首先对比两整数的长度,若不等长则说明更长的整数更大。
  2. 若两整数等长则对比两整数的每一位,从高位往低位对向下对比,一旦某位不想等则该位较大的整数更大。
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发