アプリ版:「スタンプのみでお礼する」機能のリリースについて

void SortBubble(int array[],int n)
{
int i,j,temp;

for (i = 0;i < n - 1;i++) {
for (j = 0;j < n - 1;j++) {
if (array[j + 1] < array[j]) {
temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;
}
}
}
}

temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;

の部分の意味がわかりません。解説お願いします。

A 回答 (3件)

二つの変数の値を入れ替える処理です。



変数 A,B の値を入れ替える場合は、作業用変数 X を介して
X ← A
A ← B
B ← X

例題の場合ですと、
大きい値の変数 array[j] を
作業用変数 temp を介して
より後の変数 array[j+1] と入れ替えることにより、
最終的に大きい値をより後ろの方へと並べ替えを行っています。

この様な入れ替えの処理は、アルゴリズムを実装する上で多用するのですが、
昔の CPU ではこれを効率的に処理できる命令が無かったため、
C言語などでは入れ替えの文法が用意されませんでした。
そのため少々直感的でない記述となってしまいます。
    • good
    • 0
この回答へのお礼

わかりやすかったです。ありがとうございました。

お礼日時:2015/11/12 15:55

>の部分の意味がわかりません。

解説お願いします。

AとBを入れ替える A <=> Bという命令があれば
 array[j] <=> array[j + 1];
のことです。
    • good
    • 0

バブルソート自体の動作は理解できていますか?



バブルソートの動作に「入れ替える」というのがあるかと思いますが、それです
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!