正经题解|划分数组
2024-03-22 13:37:23
发布于:浙江
7阅读
0回复
0点赞
【算法分析】
定义 函数对 数组递归的进行划分输出,参数有 数组,、, 和 分别表示划分前的第一个位置和最后一个位置。
递归的结束条件是划分到只有一个元素时:l >= r
。
int mid = (l + r) / 2;
, 为划分的中间位置,先输出前半部分 ~,再输出后半部分 ~。然后划分前半部分并输出:Divide(a, l, mid);
,再划分后半部分并输出:Divide(a, mid + 1, r);
。
【参考代码】
#include <iostream>
using namespace std;
const int N = 110;
int a[N];
void Divide(int a[], int l, int r) {
if (l >= r) return;
int mid = (l + r) / 2;
cout << "[";
for (int i = l; i <= mid; i++) {
cout << a[i] << " ";
}
cout << "],[";
for (int i = mid + 1; i <= r; i++) {
cout << a[i] << " ";
}
cout << "]" << endl;
Divide(a, l, mid);
Divide(a, mid + 1, r);
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
Divide(a, 1, n);
return 0;
}
【时间复杂度】
【预计得分】
这里空空如也
有帮助,赞一个