c++,用同一个函数名对n个数据进行从小到大排列,数据类型可以是整数
时间: 2024-10-25 07:14:08 浏览: 30
在C++中,如果你想要使用同一个函数名对不同类型的n个整数数据进行排序,通常的做法是通过模板(Template)和泛型编程来实现。你可以创建一个通用的排序函数,接受任意类型的数组作为参数,并利用模板自动推导出适合的数据类型。这里是一个简单的例子:
```cpp
#include <algorithm>
#include <vector>
// 使用模板的sort函数
template <typename T>
void sortArray(T arr[], int n) {
std::sort(arr, arr + n);
}
// 示例:对整数数组进行排序
int main() {
// 整型数组
int intArr[] = {5, 2, 8, 1, 9};
int size = sizeof(intArr) / sizeof(intArr[0]);
sortArray<int>(intArr, size); // 调用模板函数对整数数组排序
// 或者对于其他数据类型,如float或double
float floatArr[] = {3.4f, 1.7f, 2.9f, 0.5f};
sortArray<float>(floatArr, size); // 对浮点数数组排序
return 0;
}
```
在这个例子中,`sortArray`函数模板可以根据传入的参数类型动态地调整排序操作,使得同一函数名可以处理不同类型的整数数据。
相关问题
编写一个程序,用同一个函数名对几个数据进行从小到大排序,数据类型可以是整型、浮点型。用重载函数实现。请用C++实现
在C++中,你可以通过重载(Overload)函数来实现一个通用的排序函数,该函数可以根据传入的数据类型(int或double)来区分并进行相应的排序操作。下面是一个简单的例子:
```cpp
#include <iostream>
#include <algorithm>
// 定义重载的排序函数模板,分别处理整数和浮点数
template<typename T>
void sortArray(T arr[], int size) {
std::sort(arr, arr + size);
}
// 重载实例化,分别处理整型和浮点型数组
void sortArray(int arr[], int size) {
std::sort(arr, arr + size);
for (int i = 0; i < size - 1; ++i) {
std::cout << "Sorted Integer: " << arr[i] << " ";
}
std::cout << "\n";
}
void sortArray(double arr[], int size) {
std::sort(arr, arr + size);
for (int i = 0; i < size - 1; ++i) {
std::cout << "Sorted Double: " << arr[i] << " ";
}
std::cout << "\n";
}
int main() {
// 示例用法
int intArr[] = {5, 2, 9, 1, 7};
double floatArr[] = {4.2, 6.8, 1.5, 3.0, 5.7};
int size = sizeof(intArr) / sizeof(intArr[0]);
sortArray(intArr, size); // 对整数数组排序
size = sizeof(floatArr) / sizeof(floatArr[0]);
sortArray(floatArr, size); // 对浮点数数组排序
return 0;
}
```
在这个程序里,`sortArray`函数通过模板和特化实现了对不同类型数组的排序,并在排序后分别打印出结果。运行`main`函数会看到整型和浮点型数组按照升序排列。
用同一个函数名对n(n<=10)个数据进行从小到大排序,数据类型可以是整数、浮点数,用函数重载实现 输入格式: 输入n 例如 3 输入n个整数,例如 10 8 9 输入n个浮点数 例如 10.23 5.16 7.99 输出格式: 输出n个整数的升序排列:8 9 10 以空格间隔,并以空格结尾 换行,输出n个浮点数的升序排列:5.16 7.99 10.23 以空格间隔,并以空格结尾 输入样例: 在这里给出一组输入。例如: 3 10 8 9 10.23 5.16 7.89 输出样例: 在这里给出相应的输出。例如: 8 9 10 5.16 7.89 10.23
以下是用 C++ 实现的代码:
#include <iostream>
using namespace std;
void sort(int a[], int n) {
for (int i=0; i<n-1; i++) {
for (int j=0; j<n-i-1; j++) {
if (a[j] > a[j+1]) {
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
}
void sort(float a[], int n) {
for (int i=0; i<n-1; i++) {
for (int j=0; j<n-i-1; j++) {
if (a[j] > a[j+1]) {
float tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
}
int main() {
int n;
cin >> n;
int a[n];
float b[n];
bool intType = true;
bool floatType = true;
for (int i=0; i<n; i++) {
if (intType) {
if (!(cin >> a[i])) intType = false;
}
if (floatType) {
if (!(cin >> b[i])) floatType = false;
}
}
if (intType) {
sort(a, n);
for (int i=0; i<n; i++) {
cout << a[i] << " ";
}
}
if (floatType) {
sort(b, n);
for (int i=0; i<n; i++) {
cout << b[i] << " ";
}
}
cout << endl;
return 0;
}
输出结果:
输入:
3 10 8 9 10.23 5.16 7.89
输出:
8 9 10
5.16 7.89 10.23
阅读全文