C言語 ドラえもんキャラの点数をバブルソートで並び替え(降順)を作ってみた。

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

おはこんばんにちは!!!
うにゃうにゃエンジニアの猫です(=^・^=)mm

バブルソートを使って、スネ夫、のび太、出木杉くん、ジャイアン、しずかちゃんの点数を高い方から(降順)バブルソートを使って並び替えます。
バブルソートは配列の後ろから前後の値を見比べて必要であれば交換して、先頭から値が決定していきます。

スネ夫72点、のび太0点、出木杉君100点、ジャイアン23点、しずかちゃん95点だとします。
最大値に並び替えると、100→95→72→23→0になります。
この最初に配列のインデックス0の所に出木杉君の100、次は1の位置にしずかちゃん、2の位置にスネ夫君…と決定する位置は移っていきます。
この決定位置を表す変数を「kime」とします。

降順のバブルソートの場合、「72,0,100,23,95」は、後ろの95点と23点を比べて、大きい方が前になるように交換していきます。
比較の為に見ている位置は後ろから前に向かっていきます。
この見ている所を変数「mite」とします。

また、値を交換する為の作業領域をtmpとします。

では、実行結果です。

点線の上が並び替える前の配列の状態、下がバブルソートで降順にソートをした後の配列の状態です。

プログラムはこちらになります。

並び替え関数Narabikae

表示関数Hyouji

main関数

コードはコチラです。

#include <stdio.h>
//点数を並び替える
void Narabekae(int score[]){
int kime; //配列の先頭からの確定位置
int mite; //後ろから前へ向かって見ているインデックス
int tmp; //入れ替えの為の作業領域
for(kime=0;kime<5;kime++){ for(mite=4;mite>kime;mite–){
if(score[mite]>score[mite-1]){ //「>」の向きを返ると昇順
tmp=score[mite];
score[mite]=score[mite-1];
score[mite-1]=tmp;
}
}
}
}
//点数を表示する
void Hyouji(int score[]){
printf(“————————————\n”);
for(int i=0;i<5;i++){
printf(“[%d点] “,score[i]);
}
printf(“\n”);
}
int main(){
//スネ夫、のび太、出木杉、ジャイアン、しずかの点数の配列
int score[]={72,0,100,23,95};
Hyouji(score);
Narabekae(score);
Hyouji(score);
}

参考図書
基本情報技術者試験のアルゴリズムでお世話になった本

C言語の入門講座を終えた今のインプット本
基本情報技術者試験の復習にもなります。
C言語を使ってコンピュータの仕組みが理解出来る実験プログラムがあり、
50の実験がそれぞれ独立しているので、短編小説を読んでいる様に読めてコードを入力して動作させています。

C言語自作サンプルメニューへ
これからプログラミングをはじめる方へ
基本情報技術者試験トップへ
息抜きに(=^・^=)写真で癒し

最後まで読んで下さってありがとうございました。
愛しています(=^・^=)mm