
버블 정렬은 선택 정렬과 유사한 아이디어에 기반한다. 선택 정렬처럼 제일 큰 원소를 끝자리로 옮기는 작업을 반복하되 제일 큰 원소를 오른쪽으로 옮기는 방법이 다르다.
인접한 2개의 레코드를 비교하여 순서대로 되어 있지 않으면 교환하는 정렬방법이다
레코드의 이동과정이 물속에서 거품이 보글보글 떠오르는 것과 유사하여 버블정렬이라 부른다(exchange sort라고도 부른다)
시간복잡도가 최선의 경우 이고 최악의 경우 이다.
버블 정렬은 상대적으로 느리기 때문에, 실제 환경에서는 더 효율적인 정렬 알고리즘을 사용하는 것이 일반적이다.
const bubbleSort = (list: number[]) => {
let temp = 0;
for (let last = list.length - 1; last >= 2; last--) {
let swapped = false;
for (let i = 0; i < last; i++) {
if (list[i] > list[i + 1]) {
console.log(`element 위치 변경 : ${list[i]} / ${list[i+1]} `);
// temp = list[i];
// list[i] = list[i + 1];
// list[i + 1] = temp;
[list[i], list[i+1]] = [list[i+1] , list[i]]
swapped = true;
}
}
if (!swapped) {
break;
}
}
console.log(list.join("-"));
}
bubbleSort([21, 5, 22, 4, 15, 33]);
element 위치 변경 : 21 / 5
element 위치 변경 : 22 / 4
element 위치 변경 : 22 / 15
element 위치 변경 : 21 / 4
element 위치 변경 : 21 / 15
element 위치 변경 : 5 / 4
4-5-15-21-22-33
swapped 변수를 사용하여 버블 정렬 알고리즘의 성능을 최적화하는 데 도움을 준다.