【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++#
C++学习 文章被收录于专栏

c++面向对象程序设计课, 作业题选自谭浩强的《c++面向对象程序设计》(第2版)

全部评论
这个是笔试爱考的点啊
点赞 回复 分享
发布于 2022-08-15 20:05

相关推荐

肖先生~:先别说工资,现在有个工作就不错了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务