HM170 模板选择降序

HM170 模板选择降序

HM170 模板选择降序

来源: 第 170 集 模板-函数模板案例-数组排序

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

用函数模板封装一个能给**不同元素类型**的数组排序的函数。排序规则固定为**从大到小**,算法固定为**选择排序**。再写一个交换模板和一个打印模板配合它。

必须实现下面三份模板(classtypename 均可):

template<class T>
void mySwap(T &a, T &b);

template<class T>
void mySort(T arr[], int len);

template<class T>
void printArray(T arr[], int len);

要求:

  1. mySwap 用临时变量交换两个引用。
  2. mySort 做降序选择排序:外层 \(i\) 从 \(0\) 到 \(len-1\),先认定 max = i;内层 \(j\) 从 \(i+1\) 起,若 arr[max] < arr[j]max = j;若 \(i \ne max\),调用 mySwap 交换 arr[max]arr[i]
  3. printArray 按顺序输出每个元素,元素之间一个空格,最后换行。字符按字母本身输出,整数按十进制输出。
  4. 数组长度由输入给出,不要用 sizeof 去猜字节数。

先对一个字符数组排序并打印,再对一个整数数组排序并打印,以证明同一套模板对两种类型都成立。字符按 ASCII 码比大小。

输入格式

第一行一个整数 \(n\)(\(1 \le n \le 1000\)),随后一行 \(n\) 个小写字母,以空格分隔。

再一行一个整数 \(m\)(\(1 \le m \le 1000\)),随后一行 \(m\) 个整数,每个绝对值不超过 \(10^9\)。

输出格式

第一行:字符数组降序结果。

第二行:整数数组降序结果。

行末换行。

样例

输入 #1

6
b a d c f e
9
7 5 1 3 9 2 4 6 8

输出 #1

f e d c b a
9 8 7 6 5 4 3 2 1

输入 #2

1
z
1
-7

输出 #2

z
-7

说明

  • 必须用选择排序,并且交换必须走 mySwap 模板。
  • 字符 fa 的 ASCII 更大,因此降序是 f e d c b a
  • 同一份 mySort 既排字符也排整数,不要写两套排序函数体。

信息

ID
1169
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者