Распечатать все изображение алгоритма сортировки слиянием

Я новичок в 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] << " ";
}

Приведенный выше код только распечатывает результаты по порядку, но не будет выглядеть как изображение. Буду признателен, если вы поможете мне. Спасибо!

0 ответов

Другие вопросы по тегам