按照分治法的思想,先拆分后合并。
其时间复杂度是 nlogn,属于稳定排序
function get() {
var str = [1,3,4,2]
sort(str)
}
function sort(arr) {
let len = arr.length
if(len == 1) return arr
var temp = Math.floor((0+len)/2)
var str1 = arr.slice(0, temp)
var str2 = arr.slice(temp)
return merge(sort(str1), sort(str2))
}
function merge (str1, str2) {
var str = []
while(str1.length && str2.length) {
if(str1[0] > str2[0]) {
str.push(str2.shift())
}else {
str.push(str1.shift())
}
}
return str.concat(str1).concat(str2)
}
get()