帮我写一个js的归并排序
时间: 2023-01-29 21:06:01 浏览: 86
好的,我来帮你写一个 JS 版本的归并排序。
首先,如果你还不了解归并排序,我建议你先了解一下它的基本原理。归并排序是一种分治算法,它将一个大的数组分成两个小的数组,递归地对这两个小的数组进行排序,然后将它们合并起来。
现在,我们来看看如何实现归并排序。首先,我们需要定义一个合并两个数组的函数:
```
function merge(left, right) {
let result = [];
while (left.length > 0 && right.length > 0) {
if (left[0] <= right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
return result.concat(left).concat(right);
}
```
然后,我们可以定义归并排序的主函数:
```
function mergeSort(array) {
if (array.length <= 1) {
return array;
}
let middle = Math.floor(array.length / 2);
let left = array.slice(0, middle);
let right = array.slice(middle);
left = mergeSort(left);
right = mergeSort(right);
return merge(left, right);
}
```
现在你就可以使用 `mergeSort` 函数来对数组进行排序了,例如:
```
let sortedArray = mergeSort([5, 4, 3, 2, 1]);
```
希望这对你有帮助。