设计一个有序Array类,在类中数组是按从小到大的顺序排列,首先输入数组的个数,然后输入数组的每个元素值(采用int类型),最后输出这个数组所有的值,main函数如下: int main() { int n; cin >> n; Array a(n); int i; for (i = 0; i < n; i++) { int x; cin >> x; a.add(x); // 往数组中添加一个数 } for (i = 0; i < n; i++) { cout << a.get(i) << " "; // 输出数组中第i个数 } cout << endl; return 0; } 输入 首先输入数组的个数 然后输入数组的每个元素值 例如 5 5 4 3 2 1 输出 有序数组的每一个值,中间用一个空格分开 例如 1 2 3 4 5
时间: 2024-03-12 17:50:21 浏览: 48
好的,这个问题很简单,下面是一个可能的实现:
```cpp
#include <iostream>
using namespace std;
class Array {
private:
int* data; // 数组的指针
int length; // 数组的长度
public:
Array(int len) {
data = new int[len];
length = len;
}
~Array() {
delete[] data;
}
void add(int x) {
int i;
for (i = length - 1; i >= 0; i--) {
if (data[i] > x) {
data[i+1] = data[i];
} else {
break;
}
}
data[i+1] = x;
}
int get(int i) {
return data[i];
}
};
int main() {
int n;
cin >> n;
Array a(n);
int i;
for (i = 0; i < n; i++) {
int x;
cin >> x;
a.add(x);
}
for (i = 0; i < n; i++) {
cout << a.get(i) << " ";
}
cout << endl;
return 0;
}
```
这个实现中,我们先在构造函数中分配了一个长度为 len 的 int 数组,然后在 add 函数中,我们循环遍历数组,找到第一个比 x 大的元素,然后将这个元素以及它后面的元素都往后移动一个位置,最后将 x 插入到这个位置上。由于数组是有序的,所以插入后仍然是有序的。最后在 get 函数中,我们直接返回数组的第 i 个元素即可。
阅读全文