버블 정렬(Bubble Sort)이란 인접한 데이터를 비교하며 자리를 바꾸는 방식을 뜻합니다. 가장 큰 데이터를 맨 뒤로 보냅니다. 알고리즘 복잡도는 O(n^2)입니다.
정렬되지 않은 데이터
15 | 11 | 1 | 3 | 8 |
↓
11 | 1 | 15 | 3 | 8 |
↓
11 | 1 | 3 | 15 | 8 |
↓
11 | 1 | 3 | 8 | 15 |
↓
1 | 11 | 3 | 8 | 15 |
↓
1 | 3 | 11 | 8 | 15 |
↓
정렬이 끝난 데이터
1 | 3 | 8 | 11 | 15 |
버블 정렬 구현 코드
pubilc class Main {
public static void bubbleSort(int[] array) {
for (int i = 1; i < array.length - 1; i++) {
for (int j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
}
바깥 for문이 i는 1부터 array의 길이 - 1, 즉 마지막 원소의 앞까지 순회합니다.
안쪽 for문이 array의 길이만큼 순회합니다. 배열의 처음부터 끝까지 순회한다는 뜻입니다.
if문에서 array의 j번째 원소가 array의 j + 1번째 원소보다 크다면 두 원소의 위치를 바꿔야 합니다. 임시 변수 temp를 생성하고 array의 j번째 원소를 할당합니다. array의 j번째 원소에 array의 j + 1번째 원소를 할당합니다. array의 j + 1번째 원소에는 array의 j번째 원소를 할당했던 임시 변수 temp를 할당합니다.
예제 출처: 컴퓨터 개론(자세한 설명이 필요하다면 아래 주소로)
https://terms.naver.com/entry.naver?docId=2270437&cid=51173&categoryId=51173
'알고리즘 > 정렬' 카테고리의 다른 글
[알고리즘 정렬] 퀵 정렬(Quick Sort) (0) | 2023.06.10 |
---|---|
[알고리즘 정렬] 힙 정렬(Heap Sort) (1) | 2023.06.09 |
[알고리즘 정렬] 합병 정렬(Merge Sort) (0) | 2023.06.08 |
[알고리즘 정렬] 선택 정렬(Selection Sort) (0) | 2023.06.07 |
[알고리즘 정렬] 삽입 정렬(Insertion Sort) (4) | 2023.06.06 |