버블 정렬은 두 인접한 데이터의 크기를 비교해 정렬하는 방법이다.
버블 정렬 과정
1. 비교 연산이 필요한 루프 범위 설정
2. 인접한 데이터 값을 비교
3. swap 조건에 부합하면 swap
4. 반복문이 끝날 때까지 2~3번 반복
5. 정렬 영역을 설정한다. 다음 루프에서 이 영역은 제외
6. 비교 대상이 없을 때까지 반복
만약 특정 루프의 전체 영역에서 swap이 일어나지 않았다면 바로 종료한다.
function bubbleSort(arr) {
let swapped;
for (let i=0; i<arr.length; i++) {
swapped = false; // 바깥 반복을 돌 때마다 false로 초기화
for (let j=0; j<arr.length;j++) {
if(arr[j]>arr[j+1]){ //뒤의 요소가 앞의 요소보다 작으면
[arr[j],arr[j+1]] = [arr[j+1],arr[j]] //swap
swapped = true; //swap이 한 번이라도 일어났다면 true가 된다.
}
}
if(!swapped) return arr;
}
return arr; //모든 정렬이 끝난 배열 반환
}