EXY-TF-0845
第 156 题
归并排序的最好、最坏和平均时间复杂度均为 $O(n \log n)$。
语言:
C++
GESP真题
五级
2025.6
判断题号:
5
EXY-TF-0844
第 157 题
下面的 C++ 代码实现归并排序。代码在执行时,将输出一次 HERE 字符串,因为 merge() 函数仅被调用一次。
void merge(std::vector<int>& arr, int left, int mid, int right) {
std::vector<int> temp(right - left + 1);
int i = left;
int j = mid + 1;
int k = 0;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= right) {
temp[k++] = arr[j++];
}
for (int p = 0; p < k; ++p) {
arr[left + p] = temp[p];
}
}
void mergeSort(std::vector<int> arr, int left, int right) {
if (left >= right) {
return;
}
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
std::cout << "HERE";
merge(arr, left, mid, right);
}
语言:
C++
GESP真题
五级
2025.6
判断题号:
4
EXY-TF-0843
第 158 题
下面的 C++ 代码用于输出每个数对应的质因数列表,输出形如:{5: [5], 6: [2, 3], 7: [7], 8: [2, 2, 2]}。
int main() {
int n, m;
cin >> n >> m;
if (n > m) swap(n, m);
map<int, vector<int>> prime_factor;
for (int i = n; i <= m; ++i) {
int j = 2, k = i;
while (k != 1) {
if (k % j == 0) {
prime_factor[i] = prime_factor[i] + j;
k /= j;
} else {
++j;
}
}
}
for (auto& p : prime_factor) {
cout << p.first << ": ";
for (int v : p.second)
cout << v << " ";
cout << endl;
}
return 0;
}
语言:
C++
GESP真题
五级
2025.6
判断题号:
3
EXY-TF-0842
第 159 题
假设函数 gcd() 函数能正确求两个正整数的最大公约数,则下面的 lcm() 函数能求相应两数的最小公倍数。
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
语言:
C++
GESP真题
五级
2025.6
判断题号:
2
EXY-TF-0841
第 160 题
下面 C++ 代码是用欧几里得算法(辗转相除法)求两个正整数的最大公约数,$a$ 大于 $b$ 还是小于 $b$ 都适用。
int gcd(int a, int b) {
while (b) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
语言:
C++
GESP真题
五级
2025.6
判断题号:
1
当前页显示 156 - 160
,共 840 道判断题