编写一个使用类模板对数组进行排序、查找和显示所有元素的程序,数组中元素个数3sns15 说明:设计一个类模板 class Array ,用于对 T 类型的数组进行排序、查找、显示所有元素,构造函数有两个 template < class T > 参数:传递数组首地址和数组元素个数。 主函数中实例化 Array < t >产生模板类 Array < int >和 Array < double >,输入两个数组的长度,再依次输入各元素的值,调用相应的成员函数完成:输出数组的原序列、从键盘输入需要查找的元素值,完成查找(如有相同的元素,则返回找到的第一个数位置)、对数组进行由小到大排序,输出排序后的结果。 输入样例: 638194752 62.36.11.58.46.73.8 8.5输出样例:array1:原序列:638194752 9在array1中的位置:5 排序后:123456789array2: 原序列:2.36.11.58.46.73.8 8.5在array2中不存在 排序后:1.52.33.86.16.78.4 12 638194752894312 6 12.56.38.590.578.663.1 10 90.5 array1: 原序列:638194752894312 10在array1中不存在 排序后:123456789124389array2: 原序列:12.56.38.590.578.663.1 90.5在array2中的位置:4 排序后:6.38.512.563.178.690.5 15 638194752894312897456 8 12.56.38.590.578.663.184.395.2 89 6
时间: 2024-02-19 09:02:45 浏览: 90
很抱歉,作为一个 AI 语言模型,我无法编写和运行代码,但我可以为您提供思路和伪代码。
首先,我们需要定义一个类模板 `Array`:
```cpp
template <typename T>
class Array {
private:
T* arr; // 指向数组的指针
int size; // 数组大小
public:
Array(T* arr, int size); // 构造函数
int search(T target); // 查找函数
void sort(); // 排序函数
void display(); // 显示所有元素
};
```
其中,构造函数需要传入一个指向数组的指针和数组大小,用于初始化类中的成员变量 `arr` 和 `size`。
查找函数 `search` 接收一个目标值 `target`,返回目标值在数组中的位置,如果不存在则返回 -1。
排序函数 `sort` 对数组进行排序,这里使用快速排序。
显示函数 `display` 输出数组中所有元素。
```cpp
template <typename T>
Array<T>::Array(T* arr, int size) {
this->arr = arr;
this->size = size;
}
template <typename T>
int Array<T>::search(T target) {
for (int i = 0; i < size; i++) {
if (arr[i] == target) {
return i;
}
}
return -1;
}
template <typename T>
void Array<T>::sort() {
quicksort(arr, 0, size - 1);
}
template <typename T>
void Array<T>::display() {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
```
接下来,我们在 `main` 函数中实例化 `Array` 类,输入数组的长度和元素,并调用相应的成员函数完成操作。
```cpp
int main() {
int n;
cout << "请输入数组1的长度:";
cin >> n;
int* arr1 = new int[n];
cout << "请输入数组1的元素:";
for (int i = 0; i < n; i++) {
cin >> arr1[i];
}
Array<int> array1(arr1, n);
cout << "array1: 原序列:";
array1.display();
int target;
cout << "请输入需要查找的元素值:";
cin >> target;
int index = array1.search(target);
if (index == -1) {
cout << target << "在array1中不存在" << endl;
} else {
cout << target << "在array1中的位置:" << index << endl;
}
array1.sort();
cout << "排序后:";
array1.display();
delete[] arr1;
double* arr2 = new double[n];
cout << "请输入数组2的长度:";
cin >> n;
cout << "请输入数组2的元素:";
for (int i = 0; i < n; i++) {
cin >> arr2[i];
}
Array<double> array2(arr2, n);
cout << "array2: 原序列:";
array2.display();
cout << "请输入需要查找的元素值:";
cin >> target;
index = array2.search(target);
if (index == -1) {
cout << target << "在array2中不存在" << endl;
} else {
cout << target << "在array2中的位置:" << index << endl;
}
array2.sort();
cout << "排序后:";
array2.display();
delete[] arr2;
return 0;
}
```
完整代码如下:
阅读全文