2) 버블 정렬(Bubble Sort)

dbstmd·2020년 9월 25일
0

알고리즘

목록 보기
3/6

문제는 저번에 했던 것과 동일하다.

<다음의 숫자들을 오름차순으로 정렬하는 프로그램을 작성하세요.>

(1, 10, 8, 3, 5, 4, 7, 9, 2, 6)

버블 정렬도 선택 정렬과 같이 매우 직관적이다.
바로 가까이에 있는 두 숫자를 비교해서 더 작은 숫자를 앞으로 보내주는 것을 반복한다.
구현은 쉽지만 가장 비효율적인 알고리즘이다.

#include <iostream>
using namespace std;

int main() {
	int temp;
	int array[10] = { 1, 10, 8, 3, 5, 4, 7, 9, 2, 6 };
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 9-i; j++)
		{
			if (array[j] > array[j + 1]) {
				temp = array[j];
				array[j] = array[j+1];
				array[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < 10; i++)
	{
		cout << array[i];
	}
}

계속 반복해서 두 숫자중 작은것을 앞으로 보낸다.
버블 정렬의 시간 복잡도는 선택 정렬과 동일한 O(N^2)이다.
하지만 선택 정렬보다 더 비효율적인 이유는 양옆으로 (탐색 -> 비교 -> 바꿈) 이 작업을 반복 수행하기 때문에 수행되는 연산이 더 많다.
그래서 실제 수행시간은 선택 정렬 < 버블 정렬 이다.

profile
개인 학습용

0개의 댓글

관련 채용 정보