歸併排序 js demo
歸併排序
歸併排序是一種穩定的排序方法。和選擇排序一樣,歸併排序的效能不受輸入資料的影響, 因為始終都是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;
}
}
相關文章
- [排序] 歸併排序排序
- 歸併排序排序
- 快速排序&&歸併排序排序
- 四、歸併排序 && 快速排序排序
- java歸併排序Java排序
- [java]歸併排序Java排序
- 歸併排序模板排序
- 歸併排序--二路排序排序
- 排序演算法__歸併排序排序演算法
- 排序演算法:歸併排序排序演算法
- 歸併排序和基數排序排序
- 歸併排序--排序演算法排序演算法
- 排序演算法 - 歸併排序排序演算法
- 排序演算法——歸併排序排序演算法
- 排序演算法(歸併排序)排序演算法
- C# 歸併排序C#排序
- 【筆記】歸併排序筆記排序
- 歸併排序例項排序
- 排序演算法之 '歸併排序'排序演算法
- php實現 歸併排序,快速排序PHP排序
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- go 實現歸併排序Go排序
- 歸併排序——C語言排序C語言
- 歸併排序 nO(lgn) 稽核中排序
- 歸併排序加例題排序
- Java實現歸併排序Java排序
- 歸併排序求逆序數排序
- 連結串列歸併排序排序
- 排序(2)--選擇排序,歸併排序和基數排序排序
- 氣泡排序、歸併排序與快速排序比較排序
- 使用 Swift 實現歸併排序Swift排序
- 演算法之歸併排序演算法排序
- 歸併排序的簡單理解排序
- 【資料結構】歸併排序!!!資料結構排序
- 歸併排序(java機試題)排序Java
- 【資料結構】歸併排序資料結構排序
- O(lgn)的三種排序,快速排序、歸併排序、堆排序排序
- 演算法:排序連結串列:歸併排序演算法排序