알고리즘/정렬 2020. 4. 6. 16:45

버블 정렬은 연속된 두 개의 값을 비교해 기준에 해당하는 값을 뒤로 넘겨 정렬하는 방식이다.

그렇기에 맨 뒤에서부터 값이 완성되어 나가며 순서는 아래와 같다.

 

-오름차순 기준

1. 1번 인덱스와 2번 인덱스를 비교한다.

2. 1번 인덱스가 더 클 경우 서로 위치를 바꾼다.

3. 2번 인덱스와 3번인덱스를 비교한다.

4. 2,3 과정을 마지막 인덱스까지 반복한다.

5. 다시 1번부터 4번을 반복하되 마지막 인덱스 - 정렬 완료된 수만큼까지만 한다.

   ㄴex) 2번째 사이클인 경우 첫번째 싸이클로 마지막값이 정렬 되 있으므로 그 앞에까지만 돌린다.

 

 시간복잡도는 (배열의 크기) * (n^2)이다.

 

코드로 구현 시 이렇게 되며, 여기에

다음과 같은 배열을 입력 시

다음과 같은 결과가 나온다.

간단하게 두 번째 사이클 첫번째 과정까지만 진행 순서를 보자.

 

1. 0번 인덱스(9)와 1번 인덱스(7)를 비교한다.

2. 0번 인덱스(9)가 더 크므로 두 인덱스간 값을 바꾼다.

   ㄴ이 과정으로 0번인덱스는 7, 1번 인덱스는 9가 된다.

3. 1번 인덱스(9)와 2번 인덱스(5)를 비교한다.

4. 1번 인덱스(9)가 더 크므로 두 인덱스간 값을 바꾼다.

5. 이 과정을 마지막 인덱스까지 반복해 9번 인덱스의 값이 9가 되었다.

    ㄴ여기서 한 싸이클이 끝난다.

6. 0번 인덱스(7)와 1번 인덱스(5)를 비교한다.

7. 0번 인덱스가 값이 더 크므로 두 인덱스간 값을 바꾼다.

8. 이 과정을 반복하되, 이미 값 하나가(1~5과정) 맨 끝에서 정렬이 되어 있으므로 그 앞에까지만 진행한다.

   ㄴ즉, 현재 싸이클 - 1만큼 진행한다 생각하면 된다.

'알고리즘 > 정렬' 카테고리의 다른 글

퀵 정렬(Quick sort)  (1) 2020.04.07
삽입 정렬(Insertion Sort)  (0) 2020.04.02
선택 정렬(Selection Sort)  (0) 2020.04.01
posted by 이오니안
: