최대 1 분 소요

Bubble Sort

버블 정렬 알고리즘은 정렬 알고리즘 중 하나로 느리지만 간단하여 자주 쓰이는 알고리즘이다.

원리

  • Index 0 부터 시작해서 n-i까지 비교해 자신 보다 작은 값을 보면 Swap
  • 한 회차에 한번도 정렬이 안됐으면 정렬을 종료한다.

시간 복잡도

\[(n-1) + (n-2)... = \frac{n(n-1)}{2} = O(N^2)\]
  • 비교 횟수
    • i가 n-2 일 때 비교횟수 : n-2
    • i가 n-1 일 때 비교횟수 : n-1
    • i가 1 일 때 비교횟수 : 1
  • 교환 횟수
    • 모두 정렬 되어 있을 경우 횟수 0
    • 평균 \(\frac{3n(n-1)}{4}\)

코드

public void BubbleSort(){
	bool sorting = false;
	for(int last = 1; last < size && (sorting == true); last++){
		sorting = false;
		for(int cur = 0; cur < size - last; cur++){
			if(data[cur] > data[cur+1]){
				swap(data[cur], data[cur+1]);
				sorting = true;
			}
		}
	}
}

댓글남기기