Computer Science/Algorithm
Bubble Sort (거품 정렬)
현식 :)
2020. 3. 30. 16:04
Bubble Sort (거품 정렬)
인접한 두 인덱스를 비교하여 위치를 교환해가며 정렬하는 방식.
코드가 단순하다.
연산 횟수가 많아 데이터 수가 많아질수록 성능이 저하된다.
시간복잡도 : T(n) = n(n-1)/2 = O(n^2)
동작 순서 (최소 선택 정렬을 예시로 함.)
- 첫번째 인덱스부터 인접한 2개의 인덱스를 비교하여 순서가 맞지 않으면 위치를 교환한다.
- 가장 큰 값이 마지막 인덱스에 위치하므로, 배열의 크기 N - 시행순서 n 까지 반복한다.
Code
#include <stdio.h> #define ARRAY_SIZE 10 //Logic 부-------------------------------------------- void bubble_sort (int array[], int n) { int temp=0; // 자리 교환을 위한 정수형 변수 temp 선언 및 초기화 for(int i=0;i<n-1;i++) // n-1 만큼 반복 { for(int j=0;j<n-i-1;j++) // n-i-1 만큼 반복 { if(array[j]>array[j+1]) // array[j] 값이 array[j+1]보다 큰 경우 { temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; // 자리 교환 } } } } //Main 부--------------------------------------------- void main() { int Arr[ARRAY_SIZE] = {3,8,7,4,0,1,5,2,6,9}; // 임의의 배열 Arr 선언 bubble_sort(Arr, ARRAY_SIZE); // bubble_sort 함수 실행 for(int i=0;i<ARRAY_SIZE;i++) // ARRAY_SIZE 만큼 반복 { printf("%d",Arr[i]); // 거품 정렬 된 배열 출력 } }
Output : 0 1 2 3 4 5 6 7 8 9