[Algorithm] 버블정렬 (배열에 있는 정수값 오름차순 정렬하기)

정렬(Sort)하는 방법을 포스팅합니다. 정렬하는 방법은 대표적으로 버블정렬,선택정렬,삽입정렬 이렇게 3가지가 있습니다. 차례대로 한번 알아보도록 하죠 먼저 이번 포스팅에서는 버블정렬에 대해 포스팅하도록 하겠습니다. 예제는 배열에 있는 정수값을 오름차순으로 정렬하는 예제를 들고왔습니다. 내림차순으로 정렬하실경우 예제의 IF문의 부등호방향만 바꿔주시면 됩니다.

 

버블정렬 

버블정렬은 배열내의 두개의 인접한 Index를 비교하여 더 큰 숫자를 뒤로 보내 차곡차곡 쌓아 정렬하는 방법입니다. 결론적으로 말하자면 배열의 뒷쪽부터 정렬하는 방법이라고 생각하시면 될 듯 합니다.

 

첫번째 for문

for문에서 [0]번째 Index와 [1]번째의 Index값을 비교하여 더 큰 숫자를 뒤로 보내줍니다.

for문에서도 마찬가지로 [1]번째 [2]번째의 Index값을 비교하여 더 큰 숫자를 뒤로 보내주죠. 

이런식으로 번처럼 배열의 끝까지 정렬을 다 했으면 다시 배열의 처음으로 돌아와

2번째 for문

정렬이 완료될때까지 반복하는것이 버블정렬입니다.

 

버블정렬로 배열에있는 정수값 오름차순 정렬하기 (C/C++)

#define num 20

int number[num] {11,234,23,4,1,5,6,2,65,764,825,46,72,47,26,69,793,25,498,245};
int temp;
for(int i = 0 ; i < num ; i ++) {
     for(int j = 0 ; j < num -i -1 ; j ++) {
                if(number[j]>number[j+1]) {
                    temp = number[j];
                    number[j] = number[j+1];
                    number[j+1] = temp;
         }
    }
}
         
for(int i = 0 ; i < 20 ; i ++) {
     printf("[%d]",number[i]);
}

 

결과값

버블정렬결과

 

 

[C언어] 선택정렬 (배열에 있는 정수값 내림차순 정렬하기)

[C언어] 삽입정렬 (배열에 있는 알파벳 차례대로 정렬하기)

[C언어] 병합정렬 (실무에서 많이쓰는 정렬방법)

[C언어] 퀵정렬 (가장 빠르고 효율적인 정렬방법)

[C언어] 여러가지 정렬 속도 비교(정렬의 시간복잡도

 

댓글

Designed by JB FACTORY