다음과 같이 음수와 양수가 섞여 있고 아직 정렬되지 않은 배열이 있다고 가정해 보겠습니다.
var arr = [10, -22, 54, 3, 4, 45, 6];
버블 정렬이란?
버블 정렬(Bubble Sort)은 인접한 두 요소를 반복적으로 비교하고, 순서가 잘못된 경우 서로 교환하는 방식으로 배열을 정렬하는 가장 기본적인 알고리즘입니다. 한 번의 순회(pass)가 끝날 때마다 가장 큰 값이 배열 끝으로 이동하며, 음수든 양수든 동일한 비교 로직으로 처리되기 때문에 별도의 조건 분기 없이 자연스럽게 오름차순 정렬됩니다.
구현 예제
다음은 JavaScript로 버블 정렬을 구현한 전체 코드입니다.
function bubbleSort(numberArray, size) {
for (var lastIndex = size - 1; lastIndex > 0; lastIndex--) {
for (var i = 0; i < lastIndex; i++) {
if (numberArray[i] > numberArray[i + 1]) {
var temp = numberArray[i];
numberArray[i] = numberArray[i + 1];
numberArray[i + 1] = temp;
}
}
}
return numberArray;
}
var arr = [10, -22, 54, 3, 4, 45, 6];
console.log(bubbleSort(arr, arr.length));코드 동작 원리
외부 루프: 배열의 마지막 인덱스부터 시작해 매 순회마다 하나씩 줄여갑니다. 각 순회가 완료되면 해당 범위에서 가장 큰 값이 맨 뒤로 확정됩니다.
내부 루프: 인접한 두 요소를 비교하여 앞의 값이 더 크면 임시 변수(temp)를 활용해 두 값을 교환(swap)합니다.
음수 처리: 비교 연산자(>)는 음수와 양수를 구분 없이 처리하므로, 추가 로직 없이도 -22 같은 음수 값도 올바르게 정렬됩니다.
프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo280.js라고 가정하겠습니다.
실행 결과
콘솔에는 다음과 같이 오름차순으로 정렬된 배열이 출력됩니다.
PS C:\Users\Amit\javascript-code> node demo280.js
[
-22, 3, 4, 6,
10, 45, 54
]