2.#
点击查看考点
函数参数, 选择排序, 递归函数
请补全程序, 使其有以下输出.
11 2 3 4 4 4 5 6 7 8
24.9 8.7 25.6
1#include <iostream>
2
3using namespace std;
4
5template <typename T>
6void my_swap(/* (1) */) {
7 T temp = *a;
8 *a = *b;
9 *b = temp;
10}
11
12template <typename T>
13void recursion(T a[], int f, int n) {
14 if (/* (2) */) {
15 return;
16 }
17 int min = f;
18 for (int i = f + 1; i <= n; i++) {
19 if (/* (3) */) {
20 min = i;
21 }
22 }
23 my_swap(/* (4) */);
24 /* (5) */
25}
26
27int main() {
28 int a[10] = {1, 4, 2, 7, 5, 4, 8, 4, 6, 3};
29 double b[3] = {4.9, 25.6, 8.7};
30 recursion(a, 0, 9);
31 for (int i = 0; i < 10; i++) {
32 cout << a[i] << ' ';
33 }
34 cout << endl;
35 recursion(b, 0, 2);
36 for (int i = 0; i < 3; i++) {
37 cout << b[i] << ' ';
38 }
39 return 0;
40}
点击查看解答参考
对比输出和 main
中的原数组, recursion
的功能应是排序.
在 recursion
内可观察到该函数首先遍历得到最小值, 再进行交换操作, 由此推测是选择排序.
T* a, T* b
f > n
a[i] < a[m]
&a[f], &a[min]
recursion(a, f + 1, n);
. 注意分号!