【C++之重载函数】数据排序
题目要求
对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型,用重载函数。
——谭浩强的《C++面向对象程序设计》第1章习题第13小题
重载函数
1.在同一作用域中出现用同个函数名定义多个函数,这些函数的参数个数和参数类型不相同,实现不同的功能,这就是函数重载。
2.系统会根据实参的类型找到与之匹配的函数,然后调用该函数。
3.重载函数的参数个数或类型必须至少有其中之一不同,函数返回值类型可以相同也可以不同。但不允许参数个数和类型都相同,而只有返回值类型不同。
选择法排序
选择法的基本思路是将 n 个数分为 n-1 次排序,第1次是在 a[0] 到 a[n-1] 中找最小的数,并将该数与 a[0] 进行交换;第2次在 a[1] 到 a[n-1] 中找最小的数,并将该数与 a[1] 进行交换;以此类推,第 n-1 次在 a[n-2] 到 a[n-1] 中找最小的数,并将该数与 a[n-2] 进行交换。
程序
#include <iostream>
using namespace std;
#define n 3
int sort(int a[])
{
int i, j, k, min;
for (i = 0; i < n-1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
{
if (a[j] < a[k])
k = j;
}
if (k != i)
{
min = a[k];
a[k] = a[i];
a[i] = min;
}
}
return a[n];
}
float sort(float a[])
{
int i, j, k;
float min;
for (i = 0; i < n-1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
{
if (a[j] < a[k])
k = j;
}
if (k != i)
{
min = a[k];
a[k] = a[i];
a[i] = min;
}
}
return a[n];
}
double sort(double a[])
{
int i, j, k;
double min;
for (i = 0; i < n-1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
{
if (a[j] < a[k])
k = j;
}
if (k != i)
{
min = a[k];
a[k] = a[i];
a[i] = min;
}
}
return a[n];
}
int main(int argc, char *argv[])
{
// 1.整型、单精度型、双精度型数组定义
int num1[n];
float num2[n];
double num3[n];
// 2.输入数组元素
for (int i = 0; i < n; i++)
{
cin >> num1[i];
}
for (int i = 0; i < n; i++)
{
cin >> num2[i];
}
for (int i = 0; i < n; i++)
{
cin >> num3[i];
}
// 3.调用排序函数,用选择法对数据进行排序
sort(num1);
sort(num2);
sort(num3);
// 4.输出数组元素
for(int i = 0; i < n; i++)
{
cout << num1[i] << " ";
}
cout << endl;
for(int i = 0; i < n; i++)
{
cout << num2[i] << " ";
}
cout << endl;
for(int i = 0; i < n; i++)
{
cout << num3[i] << " ";
}
cout << endl;
system("pause");
return 0;
} 运行结果
输入:
3 2 1
12.3 23.1 31.2
56.65 46.64 69.9
输出:
1 2 3
12.3 23.1 31.2
46.64 56.65 69.9
程序实现了数据从小到大排序。
PS:
腾讯云开学季优惠:
【腾讯云】多款云产品1折起,买云服务器送免费机器,最长免费续3个月
【腾讯云】爆款云服务器限时体验20元起,更多上云必备产品低至1元
C++学习 文章被收录于专栏
c++面向对象程序设计课, 作业题选自谭浩强的《c++面向对象程序设计》(第2版)
查看23道真题和解析