【C++之函数模板】数据排序

【C++之重载函数】数据排序
上一篇我们用重载函数实现了对n个数据从小到大的排序。
这次我们要用到函数模板。

题目要求

对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型,用函数模板

——谭浩强的《C++面向对象程序设计》第1章习题第14小题

函数模板

重载函数可以实现一个函数名多用,但在程序中仍要分别定义每一个函数,较为繁琐,而函数模板可以解决这个问题。

  1. 函数模板就是建立一个通用函数,不具体指定函数类型和形参类型,只用一个虚拟类型来代表。
  2. 凡是函数体相同的函数都可以用这个模板来代替,不用重复定义多个函数,只需要用模板定义一次
  3. 通用函数模板的定义格式:
template <typename T>

或者

template <class T>
  1. 函数模板虽然比函数重载方便,但也有局限性。函数模板只适用于函数的参数个数相同而类型不同,且函数体相同的情况。

程序

#include <iostream>
using namespace std;
#define n 3

template  <typename T>
void sort(T a[])
{
    int i, j, k;
    T 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;
        }
    }
}


int  main()
{
    // 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 32.1
46.54 65.46 34.56

输出:
1 2 3
12.3 23.1 32.1
34.56 46.54 65.46

程序实现了数据从小到大排序。

PS:
腾讯云开学季优惠:
【腾讯云】多款云产品1折起,买云服务器送免费机器,最长免费续3个月
【腾讯云】爆款云服务器限时体验20元起,更多上云必备产品低至1元

#C/C++##c++#
C++学习 文章被收录于专栏

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

全部评论
个人认为排序是最简单的题
点赞 回复 分享
发布于 2022-08-19 15:30 陕西

相关推荐

政委qqq:这道题在算法竞赛里唯一考的就是高精度,但是只能难住C++这类语言,Python直接a+b秒天秒地
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-15 10:59
已编辑
爱写代码的菜code...:哎,自己当时拿到字节offer的时候也在感叹终于拿到了,自己当时最想去的企业就是字节,结果还是阴差阳错去了鹅厂。祝uu一切顺利!!!
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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