두 개의 인접한 자료 값을 비교하면서 위치를 교환하는 방식으로 정렬하는 알고리즘
정렬 과정이 버블이 올라오는 듯하여 이러한 이름이 붙여졌다.
그 결과, 반복이 진행될수록 무시하는 범위가 커져 끝으로 갈수록 속도가 빨라진다.
Big-O : O(n^2)
Big-Ω : Ω(n^2)
(n-1)*(n-2) = n^2-3n+2
정렬이 되어 있는지 여부에 관계 없이 루프를 돌며 비교를 해야 하므로 실행 시간 상하한이 동일하다.
중복 데이터가 있는 경우 데이터가 교환되지 않고 정렬이 다 끝난 후에도 기존 중복 데이터의 순서가 유지되는 정렬
function bubbleSort (array) {
for(let i=0; i<array.length; i++){
let swap;
for(let j=0; j<array.length-1-i; j++){
if(array[j]>array[j+1]){
swap = array[j];
array[j] = array[j+1];
array[j+1] = swap;
}
}
console.log(`${i}회전 : ${array}`)
if(!swap){
break;
}
}
return array;
}
console.log(bubbleSort([5,7,3,4,1,6,2]));
참고자료
CS50
https://medium.com/@peterlin5301997/bubble-sort-5a66156c942e
https://im-developer.tistory.com/133