01 #include <bits/stdc++.h> 02 using namespace std; 03 04 const int Maxn = 10005; 05 int n, b[Maxn]; 06 07 inline void mergesort(int * a, int l, int r) { 08 if (l == r) return; 09 int mid = l + r >> 1; 10 mergesort(a, 1, mid), mergesort(a, mid + 1, r); 11 int i = l, j = mid + 1, cnt = 0; 12 while (i <= mid && j <= r) { 13 if (a[i] <= a[j]) b[++cnt] = a[i++]; 14 else b[++cnt] = a[j++]; 15 } 16 while (i <= mid) b[++cnt] = a[i++]; 17 while (j <= r) b[++cnt] = a[j++]; 18 for (i = l; i <= r; i++) a[i] = b[i - l + 1]; 19 } 20 21 int a[Maxn]; 22 23 int main(void) { 24 cin >> n; 25 for (int i = 1; i <= n; i++) cin >> a[i]; 26 mergesort(a, 1, n); 27 for (int i = 1; i <= n; i++) cout << a[i] << (i == n ? '\n' : ' '); 28 return 0; 29 }
1. 该算法中 int *a 没有传值
2. 该代码的输出结果会换行
3. 该算法中 mergesort 函数时间复杂度为 $O(nlogn)$
4. 如果输⼊为 5 4 3 9 7 8 则输出为 3 4 7 8 9 \n
5. 该算法的最劣复杂度与哪个排序算法相同( )
6. 下⾯哪句与 i==n?'\n':' ' 相同( )