Распечатать все изображение алгоритма сортировки слиянием
Я новичок в C++, и я пытаюсь распечатать пошаговый процесс сортировки слиянием, как показано ниже
А ниже приведен код C++, который я сделал с помощью функции "разделяй и властвуй".
#include <iostream>
using namespace std;
//prototype
void mergeSort2(int, int);
void merge2(int, int, int);
void printArray(int, int);
//input
int S[7] = { 38, 27, 43, 3, 9, 82, 10 };
//count divide and merge
int divideCount = 1;
int mergeCount = 1;
int main() {
//show input
printArray(0, 6);
cout << endl;
//start merge
mergeSort2(0, 6);
//final
cout << endl;
printArray(0, 6);
return 0;
}
void mergeSort2(int low, int high) {
int mid;
if (low < high) {
mid = (low + high) / 2;
cout <<"[" << divideCount << "th divide]"<< endl;
printArray(low, mid);
printArray(mid + 1, high);
cout << endl;
divideCount++;
mergeSort2(low, mid);
mergeSort2(mid + 1, high);
// cout << endl;
merge2(low, mid, high);
}
}
void merge2(int low, int mid, int high) {
int i, j, k;
int* U = new int[high + 1];
i = low; j = mid + 1; k = low;
while (i <= mid && j <= high) {
if (S[i] < S[j]) {
U[k] = S[i];
i++;
}
else {
U[k] = S[j];
j++;
}
k++;
}
if (i > mid)
for (int a = j; a <= high; a++, k++)
U[k] = S[a];
else
for (int a = i; a <= mid; a++, k++)
U[k] = S[a];
cout << "[" << mergeCount << "th merge]" << endl;
for (int a = low; a <= high; a++) {
S[a] = U[a];
cout << S[a] << " ";
}
cout << endl;
mergeCount++;
delete[] U;
}
//output
void printArray(int start, int end) {
for (int i = start; i <= end; i++)
if (i == end) cout << S[i] << "\t";
else cout << S[i] << " ";
}
Приведенный выше код только распечатывает результаты по порядку, но не будет выглядеть как изображение. Буду признателен, если вы поможете мне. Спасибо!