プロが教えるわが家の防犯対策術!

質問です

下記のコードを分かりやすく解説お願いします

初心者です

#include ‹stdio.h›
#define NUM 5

int main(void)
{

int test[NUM];
int tmp;
int i,j,s,t;

printf("%d人の点数を入力してくださち。¥n",NUM);

for(i=0
; i<NUM; i++){
scanf("%d", &test[i];
}

for(s =0; s<NUM-1; s++) {

for(t=s+1; t<NUM; t++){

if(test[t] >test[s]){

tmp = test[t];

test[t] = test[s];

test[s] = tmp;

}


}



}

A 回答 (3件)

括弧の対応が取れてない箇所がちらほらとか


ソート結果を出力してないとかいろいろ変だけど

選択ソートの降順版だね。

まず、test[0] が test[0]から test[4] までで1番大きな数を
になるように、test[0]~test[4] の内容を交換してゆく。

これでtest[0]が最大の値になったので、同じことを
test[1]~test[4] で行い、test[1] が test[1]~test[4] の中で
最大になるようにする。

以上を test[0] から test[3] までについて繰り返せば、
数字が降順に並ぶ。

配列が大きいと O(n^2)オーダーで遅くなるので
大きな配列のソートアルゴリズムとしては実用性なし。
でも Excelの数十枚のシートのソートとかくらいならこれで十分(^^;)

大きなデータのソートアルゴリズムのサブのソートアルゴリズム
としてはシンプルで速いので実用性あり。学んでおいて
損はないです。
    • good
    • 0

頭の中の処理系が文法エラーを出した.

    • good
    • 0

ソートアルゴリズムで


昇順に並べ替える
    • good
    • 0

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