演習課題
トランプのカード13枚を,小さい順に並べ替えるプログラムを,選択法で作成しよう。
(並べ替え前・並べ替え後の配列データをそれぞれ画面に表示し,うまく出来たかどうか比較しよう.)
#include <stdio.h>
void main()
{
int a[13]={13,1,5,4,3,7,9,10,8,6,11,2,12 }, i, j, k, tmp;
printf("並べ替え前:");
for(i=0;i<13;i++){
printf("%d,",a[i]);
}
printf("¥n");
for(i=0;i<12;i++){
for(j=i+1;j<13;j++){
if(a[j]<a[i]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
for(k=0;k<13;k++){
printf("%d,",a[k]);
}
printf("¥n");
}
printf("並べ替え後:");
for( i=0; i<13; i++){
printf("%d ",a[i]);
}
}
応用演習課題
(1)バブルソートか挿入ソートので小さい順に並べ替えるプログラムに挑戦しよう。
バブルソート
#include <stdio.h>
void main()
{
int a[13]={13,1,5,4,3,7,9,10,8,6,11,2,12 }, i, j, k, tmp;
printf("並べ替え前:");
for( i=0; i<13; i++){
printf("%d ",a[i]);
}
printf("¥n");
for( i=13; i>0; i-- ){ /* バブルソート */
for( j=0; j<i; j++ ){
if( a[j] > a[j+1] ){
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
for( k=0; k<13; k++){ /* 途中経過表示 */
printf("%d ",a[k]);
}
printf("¥n");
}
}
}
printf("並べ替え後:");
for(i=0;i<13;i++){
printf("%d ",a[i]);
}
}
挿入
#include <stdio.h>
void main()
{
int a[13]={13,1,5,4,3,7,9,10,8,6,11,2,12 },i,j,k,tmp;
printf("並べ替え前:");
for( i=0; i<13; i++){
printf("%d ",a[i]);
}
printf("¥n");
for (i=0;i<13;i++) { /* 挿入ソート */
tmp = a[i];
for (j = i; j > 0 && a[j-1] > tmp; j--) {
a[j] = a[j-1];
}
a[j]=tmp;
for(k=0;k<13;k++){ /* 途中経過表示 */
printf("%d ",a[k]);
}
printf("¥n");
}
printf("並べ替え後:");
for(i=0;i<13;i++){
printf("%d ",a[i]);
}
}