LoginSignup
0
1

More than 5 years have passed since last update.

バブルソート

Posted at
#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,

参考
苦しんで覚えるC言語 バブルソート

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1