利用模板封装一个函数mysort(),对不同数据类型的数组进行有由小到大的冒泡排序,并在主函数中用整型数组进行测试并输出结果
![](https://profile-avatar.csdnimg.cn/c306016e7bd3403d8005919acb542dc7_weixin_69071133.jpg!4)
关于#c++#的问题:利用模板封装一个函数mysort(),对不同数据类型的数组进行有由小到大的冒泡排序,并在主函数中用整型数组进行测试并输出结果
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
- 如下为优化版的 从小到大的冒泡排序, 可查看 代码中备注了解一下:
- 分别用 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无用
悬赏问题
- ¥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制图