개발새발/정렬
[Kotlin] 버블 정렬 - Bubble Sort
조희우
2023. 8. 28. 14:59
🔷 버블 정렬 (Bubble Sort)이란?

거품이 터지면서 위로 올라오듯이 값을 하나씩 비교하며 올라오는 정렬이다.
인접한 두 값을 비교하며 값을 정렬한다. 값을 비교하면서 정렬하기 때문에 '비교 정렬'이라고도 부른다.
데이터를 정렬하기 위하여 추가적인 데이터가 필요하지 않기에 '제자리 정렬(in-place sort)'로 분류되기도 한다.
🔷 버블 정렬의 장점
🔹쉬운 난이도
구현이 간단하다.
🔹적은 메모리
정렬을 위하여 추가적인 메모리를 사용하지 않는다.
🔷 버블 정렬의 단점
🔹교환 낭비
가장 큰 값이 가장 왼쪽에 있을 때 맨 끝으로 이동하기 위해서는 모든 값과 비교되어 올라가야한다.
혹은, 가장 큰 값이 이미 맨 끝으로 정렬되어 있어도 교환을 확인하는 상황이 생길 수 있다.
🔷 시간 복잡도
🔹최악의 경우 : O(n^2)
n개를 입력했을 때, 최악의 경우 n*n번이 실행된다.
🔹최선의 경우 : Ω(n^2)
n개를 입력했을 때, 최선의 경우 n*n번이 실행된다.
🔷 구현
🔹코틀린 (Kotlin)

fun main() {
// 리스트 생성
val bubbleList = mutableListOf<Int>(6, 5, 1, 2, 4, 3)
// 위치 변경용 변수
var temp = 0
// 리스트 내부 반복
for (i in bubbleList){
// 0부터 리스트-2까지 반복
for (j in 0 until bubbleList.size-1){
// 앞, 뒤 데이터 비교 : 오름차순으로 정렬
if (bubbleList[j] > bubbleList[j+1]){
temp = bubbleList[j]
bubbleList[j] = bubbleList[j+1]
bubbleList[j+1] = temp
}
}
}
}