归并排序 归并排序是一种稳定的排序方法。和选择排序一样,归并排序的性能不受输入数据的影响, 因为始终都是O(nlogn)的时间复杂度。代价是需要额外的内存空间。 function sortDemo2() { var arr1:number[] = [55,23,12,5,1,35,98,122,41,3,9,66,20]; var res = mergeSort(arr1); function mergeSort(arr:number[]):number[] { if(arr.length < 2) return arr; var mid:number = arr.length >> 1; var left:number[] = arr.slice(0,mid); var right:number[] = arr.slice(mid); return merge(mergeSort(left),mergeSort(right)); } function merge(a:number[],b:number[]):number[] { var res:number[] = []; while (a.length > 0 && b.length > 0){ if(a[0] > b[0]){ res.push(b.shift() as number) }else { res.push(a.shift() as number) } } while(a.length > 0){ res.push(a.shift() as number) } while(b.length > 0){ res.push(b.shift() as number) } return res; } }