JavaScript 로 버킷 정렬 구현하기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 JavaScript 에서 버킷 정렬 알고리즘을 탐구해 보겠습니다. 버킷 정렬 (Bucket sort) 은 배열의 요소를 여러 버킷에 분산시키는 방식으로 작동하는 정렬 알고리즘입니다. 각 버킷은 다른 정렬 알고리즘을 사용하거나 버킷 정렬 알고리즘을 재귀적으로 적용하여 개별적으로 정렬됩니다. 이 랩에서는 이 알고리즘을 구현하고 작동 방식을 더 깊이 이해할 수 있는 기회를 제공합니다.

버킷 정렬 알고리즘

버킷 정렬 알고리즘을 사용하여 숫자 배열을 정렬하려면 다음 단계를 따르세요.

  1. 터미널/SSH 를 열고 node를 입력하여 코딩 연습을 시작합니다.
  2. Math.min(), Math.max() 및 스프레드 연산자 (...) 를 사용하여 주어진 배열의 최소값과 최대값을 찾습니다.
  3. Array.from()Math.floor()를 사용하여 적절한 수의 buckets(빈 배열) 를 생성합니다.
  4. Array.prototype.forEach()를 사용하여 배열에서 각 버킷을 적절한 요소로 채웁니다.
  5. Array.prototype.reduce(), 스프레드 연산자 (...) 및 Array.prototype.sort()를 사용하여 각 버킷을 정렬하고 결과에 추가합니다.

다음은 JavaScript 에서 버킷 정렬 알고리즘의 예시 구현입니다.

const bucketSort = (arr, size = 5) => {
  const min = Math.min(...arr);
  const max = Math.max(...arr);
  const buckets = Array.from(
    { length: Math.floor((max - min) / size) + 1 },
    () => []
  );
  arr.forEach((val) => {
    buckets[Math.floor((val - min) / size)].push(val);
  });
  return buckets.reduce((acc, b) => [...acc, ...b.sort((a, b) => a - b)], []);
};

알고리즘을 테스트하려면 다음 코드를 실행하세요.

bucketSort([6, 3, 4, 1]); // [1, 3, 4, 6]

요약

축하합니다! 버킷 정렬 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.