[9, 8, 1, 3,8] js桶排序
时间: 2023-05-22 22:05:04 浏览: 106
这是一个非常好的问题,桶排序是一种非常高效的排序算法。下面是一个简单的 JavaScript 桶排序算法:
function bucketSort(arr) {
let len = arr.length,
buckets = [],
result = [];
for(let i = 0; i < len; i++) {
buckets[arr[i]] = buckets[arr[i]] || 0;
buckets[arr[i]]++;
}
for(let i = 0; i < buckets.length; i++) {
if(buckets[i]) {
for(let j = 0; j < buckets[i]; j++) {
result.push(i);
}
}
}
return result;
}
console.log(bucketSort([9, 8, 1, 3, 8]));
希望这能够帮助您!
相关问题
js 桶排序
桶排序是一种常见的排序算法,它将数据分成若干个桶,然后对每个桶中的数据进行排序,最后将所有桶中的数据合并起来。
下面是 JavaScript 中桶排序的代码实现:
```javascript
function bucketSort(arr, bucketSize) {
if (arr.length === 0) {
return arr;
}
// 找出数组中的最大值和最小值
var minValue = arr[0];
var maxValue = arr[0];
for (var i = 1; i < arr.length; i++) {
if (arr[i] < minValue) {
minValue = arr[i];
} else if (arr[i] > maxValue) {
maxValue = arr[i];
}
}
// 计算桶的数量
var bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;
var buckets = new Array(bucketCount);
for (var j = 0; j < buckets.length; j++) {
buckets[j] = [];
}
// 将数据分配到各个桶中
for (var k = 0; k < arr.length; k++) {
var bucketIndex = Math.floor((arr[k] - minValue) / bucketSize);
buckets[bucketIndex].push(arr[k]);
}
// 对每个桶中的数据进行排序
arr.length = 0;
for (var m = 0; m < buckets.length; m++) {
insertionSort(buckets[m]); // 可以使用其他排序算法,例如插入排序
for (var n = 0; n < buckets[m].length; n++) {
arr.push(buckets[m][n]);
}
}
return arr;
}
// 插入排序
function insertionSort(arr) {
for (var i = 1; i < arr.length; i++) {
var temp = arr[i];
var j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
```
使用方法:
```javascript
var arr = [5, 3, 8, 4, 2];
var sortedArr = bucketSort(arr, 3);
console.log(sortedArr); // [2, 3, 4, 5, 8]
```
其中,`arr` 是待排序的数组,`bucketSize` 是桶的大小。在上面的代码中,我们使用了插入排序对每个桶中的数据进行排序。如果你想使用其他的排序算法,只需要将 `insertionSort` 函数替换成其他的排序函数即可。
帮我写一个js的桶排序
当然可以,下面是一个 JavaScript 桶排序实现:
```javascript
function bucketSort(arr, bucketSize = 5) {
if (arr.length === 0) {
return arr;
}
// 找到数组中的最大值和最小值
let minValue = arr[0];
let maxValue = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < minValue) {
minValue = arr[i];
} else if (arr[i] > maxValue) {
maxValue = arr[i];
}
}
// 计算桶的数量
const bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;
const buckets = new Array(bucketCount);
for (let i = 0; i < buckets.length; i++) {
buckets[i] = [];
}
// 将每个元素放入相应的桶中
for (let i = 0; i < arr.length; i++) {
buckets[Math.floor((arr[i] - minValue) / bucketSize)].push(arr[i]);
}
// 对每个桶中的元素进行排序并合并
const sortedArr = [];
for (let i = 0; i < buckets.length; i++) {
insertionSort(buckets[i]); // 可以使用其他排序算法对桶内元素进行排序
sortedArr.push(...buckets[i]);
}
return sortedArr;
}
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
const temp = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
```
使用示例:
```javascript
const arr = [5, 2, 7, 3, 6, 1, 4];
const sortedArr = bucketSort(arr);
console.log(sortedArr); // [1, 2, 3, 4, 5, 6, 7]
```
阅读全文