# 요약
- 버블 정렬의 파생형 정렬
- 양방향 버블 정렬이 이루어진다.
- 마치 양쪽에서 흔드는것처럼 보여서 칵테일 혹은 쉐이커 정렬이라고 불린다.
# 구체적 설명
- 홀수 번째 돌때는 앞부터, 짝수번째를 돌때는 뒤부터 훑는다.
- 제일 처음에 하나, 제일 뒤에하나, 다시 제일 앞에 하나를 정렬하면서 마치 정렬하는 과정이 앞뒤로 흔드는 것처럼 보인다.
- 1회전을 수행하고 나면 오름차순, 내림차순에 따라 자료가 정렬이 진행된다.
# 알고리즘
# 코드 작성 - JAVA
import java.util.Arrays;
public class SortAlgorithm {
static int[] arr = new int[]{7, 1, 3, 2, 4, 5, 6};
public static void main(String[] args) {
sortBubble(arr);
System.out.println(Arrays.toString(arr));
}
private static void sortBubble(int[] arr) {
boolean isSwap; //교환 여부
do {
isSwap = false;
for (int i = 0; i < arr.length - 2; i++) { //시작부터 순회
if (arr[i] > arr[i + 1]) {
swap(i, i + 1);
isSwap = true; //교환 발생
}
}
if (!isSwap) {
break;
}
isSwap = false;
for (int i = arr.length - 2; i >= 0; i--) { //끝부터 순회
if (arr[i] > arr[i + 1]) {
swap(i, i + 1);
isSwap = true;
}
}
} while (isSwap);
}
private static void swap(int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
# 결과
[1, 2, 3, 4, 5, 6, 7]
#시간복잡도
최선 | O(n) |
평균 | O(n^2) |
최악 | O(n^2) |
#장단점
장점 | 단점 |
|
|
반응형
'Algorithm > Concept' 카테고리의 다른 글
[Algorithm] 정렬 - 병합 정렬(Merge Sort) (0) | 2023.11.14 |
---|---|
[Algorithm] 정렬 - 삽입 정렬(Insertion Sort) (0) | 2023.11.13 |
[Algorithm] 정렬 - 선택 정렬(Selection Sort) (0) | 2023.11.13 |
[Algorithm] 정렬 - 버블 정렬(Bubble Sort) (0) | 2023.11.10 |
[Algorithm] 탐색 - DFS와 BFS (0) | 2023.09.22 |