weixin_69071133 2023-02-19 20:32 采纳率: 50%
浏览 51
已结题

关于#c++#的问题:利用模板封装一个函数mysort(),对不同数据类型的数组进行有由小到大的冒泡排序,并在主函数中用整型数组进行测试并输出结果

利用模板封装一个函数mysort(),对不同数据类型的数组进行有由小到大的冒泡排序,并在主函数中用整型数组进行测试并输出结果

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-02-19 20:44
    关注
    • 如下为优化版的 从小到大的冒泡排序, 可查看 代码中备注了解一下:
    • 分别用 int ,double ,char 等类型的数组测试。
    #include <iostream>
    using namespace std;
    
    template<typename T>
    void sort1(T a[], int len);
    
    int main()
    {
        int i;
        int a[5] = {3, 5, 2, 4, 1};
        double b[5] = {4.2, 7.4, 3.4, 2.3, 5.4};
        char c[5] = {'c', 'a', 'g', 'e', 'd'};
        mysort(a, 5);
        mysort(b, 5);
        mysort(c, 5);
        for(i = 0; i < 5; i++) 
        {
            printf("%d ", a[i]);
        }
        printf("\n");
        for(i = 0; i < 5; i++) 
        {
            printf("%.2lf ", b[i]);
        }
        printf("\n");
        for(i = 0; i < 5; i++) 
        {
            printf("%c ", c[i]);
        }
        return 0;
    }
    
    template<typename T>
    void mysort(T a[], int len)
    {
        int i, j;
        T t;
        for(i = 0; i < len - 1; i++) 
        {
            int flag = 0; // 是否冒泡标识
            for(j = 0; j < len - i - 1; j++)
            {
                if (a[j] > a[j + 1]) // 从小到大冒泡
                {
                    t = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = t;
                    flag = 1; // 冒过泡了
                }
            }
            if (!flag) // 都没有冒泡,说明已排序好,直接跳出循环 
                break;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 创建了问题 2月19日

悬赏问题

  • ¥15 压力传感器控制led
  • ¥15 matlab使用报错
  • ¥15 如何用BL55072驱动屏幕
  • ¥100 网页利用NC文件数据生成云图
  • ¥15 vivo手机的101root检测通常包括Bootloader状态检测吗,有没有懂的人来回答下?
  • ¥15 c++ 单例模式 在不项目之间的引用问题
  • ¥15 我想在微信名中用上红桃♥️这个表情 可是保存不了 说是有特殊符号或者不支持的语言 需要怎么做呢
  • ¥15 oracle报skip not validate connection
  • ¥15 请问左奇异向量怎么求解呢?
  • ¥15 Arcgis pro制图