题目描述
设计一个类模板,实现任意类型数组的排序(升序),至少包括整型、字符、字符串类型。
输入
每组数据首先输入数组的长度n,由整型表示,之后顺序输入数组的元素。 共输入三组数据,分别为整型、字符、字符串类型。
输出
输出三组数据升序排序之后的结果。
样例输入
10
12 6 32 1 -2 19 345 0 -9 30
8
b u % 9 G Q a V
5
nankai university tianjin asd asdd
样例输出
-9 -2 0 1 6 12 19 30 32 345
% 9 G Q V a b u
asd asdd nankai tianjin university
提示
不需要实现循环输入; 不需要考虑n和数组实际输入的元素个数不同的情况。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
template<class T>
class Array //类模板
{
public:
Array(int size) : size_(size) //构造函数
{
data_ = new T[size_]; //动态分配内存
}
~Array() //析构函数
{
delete[] data_; //释内存
}
void Input() //输入数据
{
for (int i = 0; i < size_; ++i) {
cin >> data_[i];
}
}
void Sort() //排序
{
sort(data_, data_ + size_); //使用algorithm库中的sort函数
}
void Output() //输出排序后的结果
{
for (int i = 0; i < size_; ++i) {
cout << data_[i] << " ";
}
cout << endl;
}
private:
T *data_; //数据
int size_; //长度
};
int main() {
int n;
//整型数组
cin >> n;
if (n <= 0) {
cout << "输入有误" << endl;
return 0;
}
if (n > 1000) {
cout << "数组长度过长,最多为1000" << endl;
return 0;
}
Array<int> int_array(n);
int_array.Input();
int_array.Sort();
int_array.Output();
//字符数组
cin >> n;
if (n <= 0) {
cout << "输入有误" << endl;
return 0;
}
if (n > 1000) {
cout << "数组长度过长,最多为1000" << endl;
return 0;
}
Array<char> char_array(n);
char_array.Input();
char_array.Sort();
char_array.Output();
//字符串数组
cin >> n;
if (n <= 0) {
cout << "输入有误" << endl;
return 0;
}
if (n > 1000) {
cout << "数组长度过长,最多为1000" << endl;
return 0;
}
Array<string> string_array(n);
string_array.Input();
string_array.Sort();
string_array.Output();
return 0;
}