버블 정렬

                   -Intro to Sorting Algorithm
                   -Built-In JavaScript Sorting
                   -Bubble Sort
                   -Bubble Sort: Implementation
                   -Bubble Sort: Optimization

정렬 알고리즘 소개



정렬 알고리즘은 배열과 같은 컬렉션의 항목을 재정렬하여 항목이 일종의 순서로 정렬되도록 하는 프로세스입니다.

몇 가지 예는 다음과 같습니다.

- 작은 것부터 큰 것 순으로 정렬하기
- 알파벳순으로 이름 정렬
- 개봉 연도를 기준으로 영화 정렬
- 수익을 기준으로 영화 분류

정렬은 응용 프로그램의 일반적인 기능입니다. 물건을 분류하는 방법에는 여러 가지가 있습니다. 다른 기술에는 고유한 장점과 단점이 있습니다.

애니메이션으로 정렬 알고리즘을 보여주는 흥미로운 웹 사이트.

https://www.toptal.com/developers/sorting-algorithms

내장 JavaScript 정렬



Javascript에는 정렬 방법이 내장되어 있지만 예상과 약간 다르게 작동합니다. sort() 메서드는 배열의 요소를 제자리에 정렬하고 배열을 반환합니다. 항목을 정렬하는 안정적인 방법이 아닙니다.

내장된 정렬 방법은 선택적 비교기 기능을 허용합니다. 비교기 기능은 JavaScript에 정렬 방법을 알려줍니다. 비교기는 요소 쌍(a 및 b)을 보고 반환 값에 따라 정렬 및 순서를 결정합니다.

추가 정보: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

버블 정렬: 가장 큰 값이 위로 버블링되는 정렬 알고리즘입니다. 많은 정렬 알고리즘에는 일종의 스와핑 기능이 포함됩니다.


버블 정렬: 구현




function bubbleSort(arr){
  for(var i = arr.length; i > 0; i--){
    for(var j = 0; j < i - 1; j++){
      console.log(arr, arr[j], arr[j+1]);
      if(arr[j] > arr[j+1]){
        var temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;         
      }
    }
  }
  return arr;
}

// ES2015 Version
function bubbleSort(arr) {
  const swap = (arr, idx1, idx2) => {
    [arr[idx1], arr[idx2]] = [arr[idx2], arr[idx1]];
  };

  for (let i = arr.length; i > 0; i--) {
    for (let j = 0; j < i - 1; j++) {
      if (arr[j] > arr[j + 1]) {
        swap(arr, j, j + 1);
      }
    }
  }
  return arr;
}

bubbleSort([8,1,2,3,4,5,6,7]);



버블 정렬: 최적화






function bubbleSort(arr){
  var noSwaps;
  for(var i = arr.length; i > 0; i--){
    noSwaps = true;
    for(var j = 0; j < i - 1; j++){
      if(arr[j] > arr[j+1]){
        var temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;
        noSwaps = false;         
      }
    }
    if(noSwaps) break;
  }
  return arr;
}

bubbleSort([8,1,2,3,4,5,6,7]);


좋은 웹페이지 즐겨찾기