0002. 単純ソート(「馬鹿ソート」)(C言語)

戻る

a_basort.cのソースコード】


/*-------------------------------------*/
/* 単純ソート法によるソート a_basort.c */
/*-------------------------------------*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 100

void ba_sort(int d[], int top, int end);

int main(void)
{
	int i, d[N];
	
	srand((unsigned int)time(NULL));
	
	printf("【整列前】\n");
	for (i = 0; i < N; i++) {
		d[i] = rand() % 100;
		printf("%3d ", d[i]);
		if ((i + 1) % 10 == 0)
			printf("\n");
	}
	printf("\n");
	
	ba_sort(d, 0, N-1);
	
	printf("【整列後】\n");
	for (i = 0; i < N; i++) {
		printf("%3d ", d[i]);
		if ((i + 1) % 10 == 0)
			printf("\n");
	}
	printf("\n");
}

void ba_sort(int d[], int top, int end)
{
	int i, j, tmp;
	
	for (i = top; i < end; i++) {
		for (j = i + 1; j <= end; j++) {
			if (d[i] > d[j]) {
				tmp = d[i];
				d[i] = d[j];
				d[j] = tmp;
			}
		}
	}
}


a_basortの実行結果】赤字はキーボードからの入力を表す。

D:\test>a_basort
【整列前】
 20  30  51  81  82  86  17  77  62  53
 59  17  46  78  45  54  54  22  97   3
 75  97  97  60  28   9  65  42  88  38
 26  77  24  14   8  27  62  17  75  56
 55  95  95  86  33  33  74  68  88  58
 84  29  29  87  38  34   7  73   0  49
 18   1  23  47  85  56  51  20  40  60
 12  48  66  87   4  41  15  58  64   8
 69  37  54  48  97   5  95  41  92  50
 28  13  35  86   6  99  38  33  82  21

【整列後】
  0   1   3   4   5   6   7   8   8   9
 12  13  14  15  17  17  17  18  20  20
 21  22  23  24  26  27  28  28  29  29
 30  33  33  33  34  35  37  38  38  38
 40  41  41  42  45  46  47  48  48  49
 50  51  51  53  54  54  54  55  56  56
 58  58  59  60  60  62  62  64  65  66
 68  69  73  74  75  75  77  77  78  81
 82  82  84  85  86  86  86  87  87  88
 88  92  95  95  95  97  97  97  97  99 

参考文献
・林晴比古著、「C言語による実用アルゴリズム入門」、ソフトバンク・パブリッシング(株)、2004年発行。
戻る