# 요약
- 서로 인접한 두원소를 검사하여 정렬하는 알고리즘
- 인접한 2개의 데이터를 비교하여 크기가 순서대로 되어있지 않으면 SWAP한다.
- 선택 정렬과 기본 개념이 유사
# 구체적 설명
- 버블 정렬은 1번째 데이터와 2번째 데이터, 2번째 데이터와 3번째 데이터, 3번째 데이터와 4번째 데이터를 비교한다.
즉, n과 n+1을 비교하며 조건에따라 SWAP을 진행한다.. - 1회전을 수행하고 나면 오름차순, 내림차순에 따라 자료가 정렬이 진행된다.
# 알고리즘
# 코드 작성 - JAVA
import java.util.Arrays;
public class sort_bubble {
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) {
for (int i = 1; i < arr.length; i++) {
System.out.printf("%d 라운드 ", i); //해당라운드 수
System.out.println();
for (int j = 0; j < arr.length - 1; j++) {
System.out.printf("%d 비교 횟수", arr.length - i); //비교횟수
System.out.println();
if (arr[i] < arr[j]) {
swap(i, j); //swap
}
}
}
}
private static void swap(int i, int j) { //swap함수
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
# 결과
1 라운드 6 비교 횟수
2 라운드 5 비교 횟수
3 라운드 4 비교 횟수
4 라운드 3 비교 횟수
5 라운드 2 비교 횟수
6 라운드 1 비교 횟수
[1, 2, 3, 4, 5, 6, 7]
#시간복잡도
최선 | O(n^2) |
평균 | 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] 정렬 - 칵테일 정렬(Cocktail Sort) (0) | 2023.11.11 |
[Algorithm] 탐색 - DFS와 BFS (0) | 2023.09.22 |