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

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

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

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

Q&A

解決済

1回答

1114閲覧

マージソートについて

doraemon1106

総合スコア18

C++

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

0グッド

0クリップ

投稿2019/04/07 12:41

編集2019/04/07 12:46

マージソートについて一つだけ疑問があります。

#include<stdio.h>

/* マージソート */
void merge_sort (int array[], int left, int right) {
int i, j, k, mid;
int work[10]; // 作業用配列
if (left < right) {
mid = (left + right)/2; // 真ん中
merge_sort(array, left, mid); // 左を整列
merge_sort(array, mid+1, right); // 右を整列
for (i = mid; i >= left; i--) { work[i] = array[i]; } // 左半分
for (j = mid+1; j <= right; j++) {
work[right-(j-(mid+1))] = array[j]; // 右半分を逆順
}
i = left; j = right;
for (k = left; k <= right; k++) {
if (work[i] < work[j]) { array[k] = work[i++]; }
else { array[k] = work[j--]; }
}
}
}

これの最後あたりの
array[k] = work[i++]は
なぜi + +なのでしょうか?
配列の中にi + +の意味がよくわかりません。

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

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

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

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

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

Y.H.

2019/04/07 12:45

言語はC#ではなくCまたはC++ですよね? タグをCまたはC++に修正お願いします。
guest

回答1

0

ベストアンサー

配列の中にi + +の意味がよくわかりません。

C

1if (work[i] < work[j]) { array[k] = work[i++]; } 2else { array[k] = work[j--]; }

は以下と同じです。

C

1if (work[i] < work[j]) { array[k] = work[i]; i=i+1;} 2else { array[k] = work[j]; j=j-1;}

投稿2019/04/07 12:47

Y.H.

総合スコア7914

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

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

doraemon1106

2019/04/07 12:49

知らなかったです!ありがとうございます!
Y.H.

2019/04/07 12:54

++はインクリメント演算子、--はデクリメント演算子です。 それぞれ後置と前置があります。 C/C++では比較的よく使うので、ご自身で調べておくとよいと思います
doraemon1106

2019/04/09 00:11

前置を知らなかったです。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問