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