← 查看本卷题目
组合题6 个小题
已作答 0 / 6
1  #include <iostream>23  using namespace std;45  const int MAXN = 105;67  int n, m, k, val[MAXN];8  int temp[MAXN], cnt[MAXN];910 void init()11 {12     cin >> n >> k;13     for (int i = 0; i < n; i++) cin >> val[i];14     int maximum = val[0];15     for (int i = 1; i < n; i++)16         if (val[i] > maximum) maximum = val[i];17     m = 1;18     while (maximum >= k) {19         maximum /= k;20         m++;21     }22 }2324 void solve()25 {26     int base = 1;27     for (int i = 0; i < m; i++) {28         for (int j = 0; j < k; j++) cnt[j] = 0;29         for (int j = 0; j < n; j++) cnt[val[j] / base % k]++;30         for (int j = 1; j < k; j++) cnt[j] += cnt[j - 1];31         for (int j = n - 1; j >= 0; j--) {32             temp[cnt[val[j] / base % k] - 1] = val[j];33             cnt[val[j] / base % k]--;34         }35         for (int j = 0; j < n; j++) val[j] = temp[j];36         base *= k;37     }38 }3940 int main()41 {42     init();43     solve();44     for (int i = 0; i < n; i++) cout << val[i] << ;45     cout << endl;46     return 0;47 }

假设输入的 n 为不大于 100 的正整数,k 为不小于 2 且不大于 100 的正整数,val[i]在 int 表示范围内,完成下面的判断题和单选题:

判断题

第22题判断题原卷 1.5 分

这是一个不稳定的排序算法。( )

填写答案