marge_sort(int left, int right) { if (left >= right) { return; } int middle = (left + right) / 2; marge_sort(left, middle); marge_sort(middle + 1, right); marge(left, middle, right); } marge(int left, int middle, int right) { int i = left; int j = middle + 1; int k = 0; int work[20]; /* 作業用配列はどう用意したらいいのかわからないのでとりあえずこんな感じに.... while (i <= middle && j <= right) { if (array[i] <= array[j]) { work[k] = array[i]; i = i + 1; } else { work[k] = array[j]; j = j + 1; } k = k + 1; } if (i == middle + 1) { while (j <= right) { work[k] = array[j]; j = j + 1; k = k + 1; } } else { while (i <= middle) { work[i] = array[i]; i = i + 1; k = k + 1; } } /* for( int i = 0; i < (int)array.size(); i++ ) array[i] = work[i]; こうすると意味不明な数字が出てくる.....どうすれば.... */ }
最近独学でC++を学んでいます。
今はマージソートの実装に挑戦しているのですが、上手く実装できません。
どこがおかしいのかもわかりません。
どなたか私のコード修正をお願いできないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。