请使用JavaScript写一段将一个列表数据分桶的函数入参是列表a、分桶数k返回值是两个列表一个表示分桶范围一个表示桶内数据个数
function bucketSort(a, k) { // 先对列表a进行排序 a.sort(function(a, b) { return a - b; }); // 计算每个桶的范围 var range = []; var bucketSize = Math.floor((a[a.length - 1] - a[0]) / k) + 1; for (var i = 0; i < k; i++) { var start = a[0] + i * bucketSize; var end = start + bucketSize - 1; if (end > a[a.length - 1]) { end = a[a.length - 1]; } range.push([start, end]); } // 统计每个桶内的数据个数 var count = []; for (var i = 0; i < k; i++) { count.push(0); } for (var i = 0; i < a.length; i++) { for (var j = 0; j < k; j++) { if (a[i] >= range[j][0] && a[i] <= range[j][1]) { count[j]++; break; } } } return [range, count]; }
原文地址: https://www.cveoy.top/t/topic/b5XK 著作权归作者所有。请勿转载和采集!