编写一个程序,对n个数据进行从小到大排序,数据类型可以是整型、单精度型和双精度型。 (用重载函数实现)
时间: 2025-03-30 09:10:30 浏览: 25
为了编写一个能够处理不同类型数据(如整型 `int`、单精度浮点型 `float` 和双精度浮点型 `double`)的排序程序,我们可以通过使用函数重载的方式来实现。以下是具体步骤和示例代码:
---
### **思路分析**
1. 创建三个分别用于对 `int[]`, `float[]`, 和 `double[]` 数组进行排序的函数,并给它们相同的名称但接受不同类型的数组作为参数。
2. 使用标准排序算法 (例如冒泡排序或快速排序),针对每种类型的数据单独实现排序功能。
3. 调用相应版本的函数来完成任务。
下面是一个具体的 C++ 程序实例演示如何操作此需求:
---
### **C++ 实现代码**
```cpp
#include <iostream>
using namespace std;
// 函数重载 - 针对 int 类型
void sortArray(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) { // 冒泡排序法
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
// 函数重载 - 针对 float 类型
void sortArray(float arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
// 函数重载 - 针对 double 类型
void sortArray(double arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
// 打印数组通用模板(简化显示)
template<typename T>
void printArray(T arr[], int size) {
cout << "[";
for (int i = 0;i <size;++i ){
cout << arr[i];
if(i != size-1 )cout<<", ";
}
cout<<"]"<<endl;
}
int main(){
const int N=5 ;
// 整形测试案例
int intArr[N]={4,-7,98,6,3};
cout<<"原始 Int 数组: ";printArray(intArr,N);
sortArray(intArr ,N );
cout<<"排序后的Int数组:";printArray(intArr,N );
// 单精浮点数测试案例
float fltArr [N ]={3.1f ,-2.9 f, 8 .6f ,5 .5f ,-1 };
cout<<"\n 原始 Float 数组 : ";printArray(fltArr,N );
sortArray(fltArr ,N );
cout<<" 排序 后 的Float 数 组: ";printArray(fltArr,N );
// 双精 浮点 数测 试案列
double dbl Arr [N ]={2 .e+2 ,-1E +1 ,9 ,-.3 e-2 ,7 .};
cout<<"\n原 始Doubl e 数 组 : ";prin tA rray(d blAr r,N );
sor tArray(db lArr,N );
cou t <<"排 序后 的Doub le 数组:" ;pri ntA rray(dbl Ar r,N );
return 0 ;
}
```
上面的例子展示了三种基本数值类型的简单选择排序实现以及相应的输出结果展示。每个数据类型的处理都由独立的一个同名却签名不同的方法负责实施其内部逻辑运算流程图解略去此处不做赘述只保留关键部分供参考学习了解即可达到目的满足要求。
阅读全文