归并排序:采用分治思想,将数组逐步分解为只含有一个元素的小数组,再将小数组逐步合并,在合并的过程中进行排序。
时间复杂度:O(n(log(n)))
代码实现:
let arr = [2,1,6,5,4,8,9,7,3];
function mergeSort(arr){
if(arr.length > 1){
let mid = Math.floor(arr.length / 2);
let left = mergeSort(arr.slice(0,mid));
let right = mergeSort(arr.slice(mid));
arr = merge(left,right);
}
return arr;
}
function merge(left,right){
let i = 0;
let j = 0;
let result = [];
while(i < left.length && j < right.length){
if(left[i] < right[j]){
result.push(left[i]);
i ++;
}else{
result.push(right[j]);
j ++;
}
}
result = result.concat(i < left.length ? left.slice(i) : right.slice(j));
return result;
}
arr = mergeSort(arr);
console.log(arr);
归并排序算法详解与实现
本文介绍了归并排序算法,这是一种使用分治思想的排序方法。通过将数组拆分成小数组并逐步合并来实现排序,其时间复杂度为O(n(log(n)))。文中提供了JavaScript代码实现,详细展示了归并排序的过程。
986

被折叠的 条评论
为什么被折叠?



