请设计一个通用数组类模板,用以下的主程序(不能修改)完成数组排序。 int main() { int n; cin >> n; Array<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } mysort(a, n); // 排序 for (int i = 0; i < n; i++) { cout << a[i] << " "; } cout << endl; return 0; } 输入 输入分两行,第一行输入数组个数n,第二行输入n个整数 输出 输出分三行 第一行输出"分配n个数组元素" 第二行输出从小到大排序后的整数,每个整数中间用一个空格隔开 第三行输出"释放数组"
时间: 2024-03-18 08:39:17 浏览: 75
以下是一个通用的数组类模板,包含了构造函数、析构函数、数组元素访问、数组元素赋值和数组排序等功能。你可以将它放在头文件中。
```c++
template<typename T>
class Array {
private:
T* data; // 数组元素
int size; // 数组大小
public:
Array(int n) : size(n), data(new T[n]) {
cout << "分配" << n << "个数组元素" << endl;
}
~Array() {
delete[] data;
cout << "释放数组" << endl;
}
T& operator[](int index) {
return data[index];
}
void sort() {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (data[j] > data[j + 1]) {
T temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
}
};
```
接下来是主程序,使用上面的数组类模板完成排序操作。
```c++
int main() {
int n;
cin >> n;
Array<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
a.sort();
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
在上述代码中,我们可以看到构造函数会输出"分配n个数组元素",析构函数会输出"释放数组"。在主程序中,我们首先创建一个Array对象,然后通过[]运算符访问和赋值数组元素。最后调用sort()方法完成排序操作,按照从小到大的顺序输出数组元素。
阅读全文