버블정렬(Bubble Sort)
- 데이터 집합을 순회하면서 집합 내의 이웃 요소들끼리의 교환을 통해 정렬을 수행
- 제일 큰 원소를 오른쪽으로 옮기는 방법
- 버블 정렬의 비교 횟수
= (n-1)+(n-2)+…+(n-(n-2))+(n-(n-1))
= (n-1)+(n-2)+…+3+2+1 = (n-1)(n/2)
비교횟수 T(n)= (n(n-1))/2 - 시간복잡도
- 평균, 최악, 최고: O(n^2)
- 기존의 레코드들이 정렬이 되어 있던, 되어 있지 않던 상관 없이 레코드들의 가장 처음부터 끝까지 비교하는 과정이 모두 같기 때문
- 개선 방안 -> 정렬되어있는 경우 루프를 취소하고 빠져나오도록 하는 방법
- 공간복잡도: O(1)
동작원리
- 이웃 하는 두 레코드를 비교하여 큰 레코드는 우측으로 밀어낸다.
- 더 이상 이웃 하는 레코드가 없을 때까지 반복한다.
- 리스트의 가장 우측부터 큰 레코드로 정렬이 된다.
- 모든 레코드가 정렬이 될 때까지 반복한다.
예제코드
|
|