重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

#include<stdio.h>
int main(void){
int i, j, temp, array[]={2, 7, 5, 4};
for(i = 0; i < 4; ++i){
for(j = i + 1; j < 4; ++j){
if(array[ i ] < array[ j ]){
temp = array[ i ];
array[ i ] = array[ j ];
array[ j ] = temp;
}
}
for(j = 0; j < 4; ++j){
printf("%d,",array[j]);
}
printf("\n");
}
return 0;
}



7,2,5,4,
7,5,2,4,
7,5,4,2,
7,5,4,2,

答えはこのように表示されているんですが
なぜこうなるのかが分かりません。

解説お願いします。

A 回答 (3件)

for(i = 0; i < 4; ++i){ // [3] ここから


 for(j = i + 1; j < 4; ++j){ // [2] ここから
  if(array[ i ] < array[ j ]){ // [1] ここから
   temp = array[ i ];
   array[ i ] = array[ j ];
   array[ j ] = temp;
  } // [1] ここまでやると : array[i] > array[j] となる
 } // [2] ここまでやると array[i]~array[3] までの最大値が array[i] となる
} // [3] ここまでやると 配列が降順にソートされる
    • good
    • 0

「バブルソート」というアルゴリズムです。


解説はいくらでもWeb検索で拾えます。
    • good
    • 0

i=0, j=1


i=0, j=2
i=0, j=3
の順番に考えていってもわかりませんか?
    • good
    • 0

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