소개
이 랩에서는 JavaScript 에서 버킷 정렬 알고리즘을 탐구해 보겠습니다. 버킷 정렬 (Bucket sort) 은 배열의 요소를 여러 버킷에 분산시키는 방식으로 작동하는 정렬 알고리즘입니다. 각 버킷은 다른 정렬 알고리즘을 사용하거나 버킷 정렬 알고리즘을 재귀적으로 적용하여 개별적으로 정렬됩니다. 이 랩에서는 이 알고리즘을 구현하고 작동 방식을 더 깊이 이해할 수 있는 기회를 제공합니다.
버킷 정렬 알고리즘
버킷 정렬 알고리즘을 사용하여 숫자 배열을 정렬하려면 다음 단계를 따르세요.
- 터미널/SSH 를 열고
node를 입력하여 코딩 연습을 시작합니다. Math.min(),Math.max()및 스프레드 연산자 (...) 를 사용하여 주어진 배열의 최소값과 최대값을 찾습니다.Array.from()및Math.floor()를 사용하여 적절한 수의buckets(빈 배열) 를 생성합니다.Array.prototype.forEach()를 사용하여 배열에서 각 버킷을 적절한 요소로 채웁니다.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 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.