버블 정렬의 개념과 이것을 통해 배열을 오름차순으로 정리하는 코드를 js로 구현해보고자 한다.
버블 정렬은 데이터를 2개씩 묶어서 비교한뒤 더 큰수가 오른쪽으로 가도록 정렬하는 방식이다. 그림으로 표현하면 아래와 같다.
🔼 출처: https://reactgo.com/bubble-sort-algorithm-javascript/
버블 정렬을 JS로 표현해주기 위해서는 for에 if조건문을 넣어 임시 배열 역할을 하는 변수를 선언해 줘야한다. 코드로 표현하면 아래와 같다.
let arr = [5,2,3,4,1];
//12345 출력 버블 정렬
function bubble(arr){
for(i=0; i < arr.length-1; i++){
for(j=0; j < arr.length-i; j++){
if(arr[j] > arr[j+1]){
let temp =arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
bubble(arr);
console.log(arr);
위에 쓴 코드 중 if문 조건에대해 헷갈리지 않게 정리 하고자 한다.
if(arr[j] > arr[j+1]){
let temp =arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
예를 들어서, 이런 배열이 있다고 가정해보자
위 코드에 직접 숫자를 넣어 표현해보면,
let temp = 5;
arr[0] = arr[1] // 5 = 3 -> '='은 오른쪽을 왼쪽에 넣는다는 의미!
arr[0] = 3 -> 위치가 변경된걸 알 수 있음
arr[1] = temp //5 -> 만약 배열을 temp를 선언해주지 않았다면, arr[0]의 값이 저장될 공간이 없기 때문에 버블정렬이 일어날 환경이 만들어지지 않는다!
이런식으로 for에 해당하는 조건 을 따라서 if문이 반복되면
이와같이 오름차순으로 버블정렬이 실행된다.