バブルソートのプログラミングについて、ただ最初と最後の列を出すだけでなく、間の変換を一個するたびに数列を出力するようにしたいです。
c
1#include<stdio.h> 2 3/* 値を入れ替える関数 */ 4void swap (int *x, int *y) { 5 int temp; // 値を一時保存する変数 6 7 temp = *x; 8 *x = *y; 9 *y = temp; 10} 11 12 13int main (void) { 14 int array[10] = { 2, 1, 8, 5, 4, 7, 9, 0, 6, 3 }; 15 int i,j; 16 int array_size=10; 17 printf("Before sort: "); 18 for (i = 0; i < 10; i++) { printf("%d ", array[i]); } 19 printf("\n"); 20 for (i = 0; i < array_size - 1; i++){ //bubble sort 21 for (j = array_size - 1; j >= i + 1; j--){ 22 if (array[j] < array[j-1]) { swap(&array[j], &array[j-1]); } 23 } 24 for (i = 0; i < 10; i++) { printf("%d ", array[i]); } //ここで一回ごとに出力したい 25 printf("\n"); 26 } 27 28 29 printf("After sort: "); 30 for (i = 0; i < 10; i++) { printf("%d ", array[i]); } 31 printf("\n"); 32 33 return 0; 34}
出力結果は
Before sort: 2 1 8 5 4 7 9 0 6 3
0 2 1 8 5 4 7 9 3 6
After sort: 0 2 1 8 5 4 7 9 3 6
と途中で終わっている結果になっています。どうしてですか??
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。