이 기사에서는 JavaScript의 버킷 정렬에 대해 설명합니다. JavaScript의 버킷 정렬에 관심이 있다면 이 기사를 살펴보겠습니다. point
버킷 정렬은 카운팅 정렬의 업그레이드 버전입니다. 함수의 매핑 관계를 활용합니다. 효율성의 핵심은 이 매핑 함수를 결정하는 데 있습니다.
버킷 정렬을 보다 효율적으로 수행하려면 다음 두 가지를 수행해야 합니다.
1. 추가 공간이 충분할 때 버킷 수를 늘려보세요.
2. 입력 N을 변환합니다. 데이터는 K개의 버킷에 균등하게 분산됩니다
동시에 버킷의 요소를 정렬할 때 어떤 비교 정렬 알고리즘을 선택하느냐가 성능에 결정적인 영향을 미칩니다.
가장 빠른 때는 언제
입력 데이터를 각 버킷에 균등하게 분산할 수 있을 때
가장 느린 때는 언제
입력 데이터를 동일한 버킷에 분산할 때
버킷 정렬 JavaScript 코드 구현:
function bucketSort(arr, bucketSize) { if (arr.length === 0) { return arr; } var i; var minValue = arr[0]; var maxValue = arr[0]; for (i = 1; i < arr.length; i++) { if (arr[i] < minValue) { minValue = arr[i]; //输入数据的最小值 } else if (arr[i] > maxValue) { maxValue = arr[i]; //输入数据的最大值 } } //桶的初始化 var DEFAULT_BUCKET_SIZE = 5; //设置桶的默认数量为5 bucketSize = bucketSize || DEFAULT_BUCKET_SIZE; var bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1; var buckets = new Array(bucketCount); for (i = 0; i < buckets.length; i++) { buckets[i] = []; } //利用映射函数将数据分配到各个桶中 for (i = 0; i < arr.length; i++) { buckets[Math.floor((arr[i] - minValue) / bucketSize)].push(arr[i]); } arr.length = 0; for (i = 0; i < buckets.length; i++) { insertionSort(buckets[i]); //对每个桶进行排序,这里使用了插入排序 for (var j = 0; j < buckets[i].length; j++) { arr.push(buckets[i][j]); } } return arr;}
위 내용이 이 글의 전부입니다. 잘 모르신다면 양쪽 모두 직접 구현해 보시면 익히기 쉬울 것입니다!
관련 권장 사항:
버킷 정렬 알고리즘 예제 공유의 PHP 구현
위 내용은 JavaScript의 버킷 정렬에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!