# include <stdio.h>
void SortBubble(int array[], int n, int asc);
int main(void){
int array[] = {7,1,6,9,3};
int arraySize = (int)(sizeof(array)/sizeof(array[0]));
SortBubble(array, arraySize, 1);
SortBubble(array, arraySize, 0);
return 0;
}
void SortBubble(int array[], int n, int asc){
int tmp;
for(int i = 0; i < n - 1; i++){
for(int j = 0; j < n - 1; j++){
if(asc) {
// 昇順
if(array[j+1] < array[j]){
// jとj+1番目の値を入れ替える
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
} else {
// 降順
if(array[j+1] > array[j]){
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
}
asc
? printf("昇順:")
: printf("降順:");
for(int i = 0; i < n; i++){
printf("%d,", array[i]);
}
printf("\n");
}
数値の流れ
i=0のとき,jのループを回すと...
1,7,6,9,3
1,6,7,9,3
1,6,7,9,3
1,6,7,3,9
i=1のとき,jのループを回すと...
1,6,7,3,9
1,6,7,3,9
1,6,3,7,9
1,6,3,7,9
.
.
.
出力
昇順:1,3,6,7,9,
降順:9,7,6,3,1,