程序填空题:归并排序
完成程序填空,实现归并排序(递归方法)。
```c++
#include
#include
using namespace std;
void mergeSort(vector &Array, int start, int end);
void merge(vector &Array, int start, int mid, int end);
int main(){
int n;
vector a;
vector::iterator i;
//输入数组
cin >> n;
a.resize(n);
for(i = a.begin(); i != a.end(); i++){
cin >> *i;
}
//归并排序
mergeSort(a, 0, a.size()-1);
//输出数组
i = a.begin();
cout << *i++;
for( ; i != a.end(); i++){
cout << " " << *i;
}
return 0;
}
void mergeSort(vector &Array, int start, int end) {
if (start >= end)
int mid = ;
}
void merge(vector &Array, int start, int mid, int end) {
int i = start, j = mid+1, k = 0;
vector temp(end - start +1);
while(i <= mid && j<= end){
if(Array[i] <= Array[j]){
}
else{
}
}
while(i <= mid){
}
while(j <= end){
}
}
```
答案:
第1空:return;
第2空:(start + end) / 2
第3空:mergeSort(Array, start, mid);
第4空:mergeSort(Array, mid + 1, end);
第5空:merge(Array, start, mid, end);
第6空:temp[k++] = Array[i++];
第7空:temp[k++] = Array[j++];
第8空:temp[k++] = Array[i++];
第9空:temp[k++] = Array[j++];
第10空:copy(temp.begin(), temp.end(), Array.begin()+start);
```c++
#include
#include
using namespace std;
void mergeSort(vector
void merge(vector
int main(){
int n;
vector
vector
//输入数组
cin >> n;
a.resize(n);
for(i = a.begin(); i != a.end(); i++){
cin >> *i;
}
//归并排序
mergeSort(a, 0, a.size()-1);
//输出数组
i = a.begin();
cout << *i++;
for( ; i != a.end(); i++){
cout << " " << *i;
}
return 0;
}
void mergeSort(vector
if (start >= end)
int mid = ;
}
void merge(vector
int i = start, j = mid+1, k = 0;
vector
while(i <= mid && j<= end){
if(Array[i] <= Array[j]){
}
else{
}
}
while(i <= mid){
}
while(j <= end){
}
}
```
答案:
第1空:return;
第2空:(start + end) / 2
第3空:mergeSort(Array, start, mid);
第4空:mergeSort(Array, mid + 1, end);
第5空:merge(Array, start, mid, end);
第6空:temp[k++] = Array[i++];
第7空:temp[k++] = Array[j++];
第8空:temp[k++] = Array[i++];
第9空:temp[k++] = Array[j++];
第10空:copy(temp.begin(), temp.end(), Array.begin()+start);