質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2192閲覧

マージソートが上手く作れない.....

wanwanwan

総合スコア21

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/11/03 07:24

編集2016/11/04 05:31
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++を学んでいます。
今はマージソートの実装に挑戦しているのですが、上手く実装できません。
どこがおかしいのかもわかりません。
どなたか私のコード修正をお願いできないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

どうすれば・・・と書いていますが個々からがプログラマーの本領発揮場面です。
設計通りに書いてみてきちんと動くコードに直すのが仕事です。

途中のポイントで(cで言うところのSystem.out.print)をたくさん挿入して
どこまで動いて中身がどのように変換(交換)されて出てくるのか表示し、
どこがおかしいのか探すのはあなたです。

けっこう面白いですよ。
ちょっと大変ですがね。
仕事でプログラマなんかすると期限が切られた中でやるので過酷ですよ。

投稿2016/11/03 12:31

maiko0318

総合スコア876

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問