代码实现
let arr = [8,4,5,6,2,3,7]
function sort(arr,l,r) {
if (l===r) {
return
}
let mid = l + ((r-l)>>1)
sort(arr,l,mid)
sort(arr,mid+1,r)
merge(arr,l,mid,r)
}
function merge(arr,l,m,r) {
let help = []
let p1 = l;
let p2 = m + 1
let i = 0
while (p1 <= m && p2 <= r) {
help[i++] = arr[p1] < arr[p2] ? arr[p1++] : arr[p2++]
}
while (p1 <= m) {
help[i++] = arr[p1++]
}
while (p2 <= r) {
help[i++] = arr[p2++]
}
for (let j = 0; j < help.length; j++) {
arr[l+j] = help[j]
}
}
function mergeSort(arr) {
sort(arr,0,arr.length - 1)
}
mergeSort(arr)
console.log(arr)
代码实现归并排序
最新推荐文章于 2024-09-14 19:44:09 发布