HM170 模板选择降序
HM170 模板选择降序
来源: 第 170 集 模板-函数模板案例-数组排序
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
用函数模板封装一个能给**不同元素类型**的数组排序的函数。排序规则固定为**从大到小**,算法固定为**选择排序**。再写一个交换模板和一个打印模板配合它。
必须实现下面三份模板(class 与 typename 均可):
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);
要求:
mySwap用临时变量交换两个引用。mySort做降序选择排序:外层 \(i\) 从 \(0\) 到 \(len-1\),先认定max = i;内层 \(j\) 从 \(i+1\) 起,若arr[max] < arr[j]则max = j;若 \(i \ne max\),调用mySwap交换arr[max]与arr[i]。printArray按顺序输出每个元素,元素之间一个空格,最后换行。字符按字母本身输出,整数按十进制输出。- 数组长度由输入给出,不要用
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模板。 - 字符
f比a的 ASCII 更大,因此降序是f e d c b a。 - 同一份
mySort既排字符也排整数,不要写两套排序函数体。
信息
- ID
- 1169
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者