今、アルゴリズムの勉強をしています。マージソートのところで、次のようなコードが書かれていたのですが理解できません。
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4 5#define N 15 6 7int sort[N]; 8int buffer[N]; 9 10void MergeSort(int n, int x[]){ 11 int i, j, k, m; 12 if (n <= 1){ 13 return ; 14 } 15 m = n / 2; 16 17 MergeSort(m, x); 18 MergeSort(n - m, x + m); //int型と配列を足せる? 19 20 for (i = 0; i < m; i++){ 21 buffer[i] = x[i]; 22 } 23 j = m; 24 i = k = 0; 25 26 while (i < m && j < n){ 27 if (buffer[i] < x[j]){ 28 x[k++] = buffer[i++]; 29 }else{ 30 x[k++] = x[j++]; 31 } 32 } 33 while (i < m){ 34 x[k++] = buffer[i++]; 35 } 36}
このコード中の Mergesort(n-m, x+m)
の部分が何をしているのかよくわかりません。また、その後のコードについても何をしているのかよくわかりません。
よろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。