C言語 バブルソート |
■mysort.c
#include
/* データを入れ替える */
void swap(int *data,int a, int b) {
int tmp = data[a];
data[a] = data[b];
data[b] = tmp;
}
int main(int argc, char* argv[]) {
/* ソートする配列 */
int data[] = {10,9,8,7,};
int i,ischange;
int data_size = sizeof(data)/sizeof(data[0]);
int count = 0;
while(1) {
ischange = 0;
for (i = 0; i < data_size-1; i++) {
if (data[i + 1] < data[i]) {
swap(data,i,i+1);
ischange = 1;
count++;
}
}
if (ischange == 0) {
break;
}
}
for (i = 0; i < data_size; i++){
printf("%d\n",data[i]);
}
printf("total step:%d\n", count);
return 0;
}
配列の大きさを
sizeof(data)/sizeof(data[0])
としているところが新しく学んだポイントでしょうか。
あわせてmakefileもかいてみました。
■Makefile
COPT=-O
mysort : mysort.o
gcc -o mysort mysort.o
mysort.o : mysort.c
gcc $(COPT) -c mysort.c
clean :
@-rm *.o
※gccの前はタブ
次はこれを元に、-rというオプションで降順に
並び替えるように変更してみます。