第8回の解答例

演習課題

トランプのカード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]);
	}
	
}