본문 바로가기
Study (etc)/C

[정렬]버블 정렬

by Haren 2019. 2. 3.

버블 정렬이란 배열에서 이웃한 수를 비교하여 큰 수를 마지막으로 보내며 정렬하는 방식의 정렬이다.

워낙 유명한 정렬이기 때문에 자세한 설명은 생략하도록 하겠다.


배열을 공부할 때 정수 배열이 순서를 뒤집는 예제를 푼 적이 있었는데, 그 부분을 배울 때에도 임시 변수를 선언하여 임시 변수에 값을 저장해두고 값을 바꿨던 기억이 있다. 여기서도 그 임시 변수를 이용하고자 한다.


크기가 7인 정수형 배열에 정수 7개를 입력받아 입력받은 정수들을 버블 정렬로 각각 오름차순과 내림차순으로 정리해보도록 하겠다.



소스코드 - 오름차순 정렬

//오름차순 #include <stdio.h> void Sort(int *ptr, int len) { int i, j; int temp; for (i = 0; i < len - 1; i++) { for (j = 0 ; j < (len - i) - 1; j++) { if (ptr[j] < ptr[j + 1]) { temp = ptr[j]; ptr[j] = ptr[j+1]; ptr[j+1] = temp; } } } } int main() { int arr[7] = { 0, }; int i; printf("7개의 정수 입력\n"); for (i = 0; i < 7; i++) { printf("입력 : "); scanf_s("%d", &arr[i]); } Sort(arr, 7); printf("정렬 후 \n"); for (i = 0; i < 7; i++) printf("%d ", arr[i]); return 0; }




소스코드 - 내림차순 정렬

//내림차순 #include <stdio.h> void Sort(int *ptr, int len) { int i, j; int temp; for (i = 0; i < len - 1; i++) { for (j = 0 ; j < (len - i) - 1; j++) { if (ptr[j] < ptr[j + 1]) { temp = ptr[j + 1]; ptr[j + 1] = ptr[j]; ptr[j] = temp; } } } } int main() { int arr[7] = { 0, }; int i; printf("7개의 정수 입력\n"); for (i = 0; i < 7; i++) { printf("입력 : "); scanf_s("%d", &arr[i]); } Sort(arr, 7); printf("정렬 후 \n"); for (i = 0; i < 7; i++) printf("%d ", arr[i]); return 0; }