【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

相关推荐

996的工作制还是没能硬啃下去,快要面试怂了,取消了
牛客80700350...:很正常,不是所有人都能接受这种强度的。不叫怯战,这叫明智
点赞 评论 收藏
分享
头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3&nbsp;投递、测评3.12&nbsp;笔试3.18&nbsp;一面3.25&nbsp;二面4.13&nbsp;ai面(hr面)4.14&nbsp;英语测评4.23&nbsp;offer(已拒)腾讯:2.6&nbsp;测评2.28&nbsp;wxg一面3.5&nbsp;wxg二面(挂)3.11&nbsp;teg一面3.21&nbsp;teg二面(取消)3.31&nbsp;teg一面4.10&nbsp;teg二面(挂)4.21&nbsp;wxg一面4.24&nbsp;wxg二面(挂)字节:1.28&nbsp;aml约面(取消)3.17&nbsp;火山一面(挂)4.8&nbsp;aml一面(挂)4.20&nbsp;抖音data一面(挂)阿里:3.23&nbsp;投递、测评3.28&nbsp;笔试3.31&nbsp;淘天一面4.8&nbsp;钉钉一面4.9&nbsp;淘天二面4.10&nbsp;阿里控股一面4.12&nbsp;钉钉二面(取消)4.15&nbsp;淘天hr面4.16&nbsp;淘天offer(已接)4.21&nbsp;高德一面(取消)4.22&nbsp;淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm&nbsp;api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
嵌入式的小白:不错啊,淘天也是挺好的,恭喜
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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