歸併排序 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排序
- 排序演算法__歸併排序排序演算法
- 排序演算法:歸併排序排序演算法
- 排序演算法 - 歸併排序排序演算法
- 排序演算法(歸併排序)排序演算法
- 歸併排序--排序演算法排序演算法
- 歸併排序--二路排序排序
- 歸併排序和基數排序排序
- 排序演算法之 '歸併排序'排序演算法
- php實現 歸併排序,快速排序PHP排序
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- 歸併排序 nO(lgn) 稽核中排序
- 歸併排序——C語言排序C語言
- go 實現歸併排序Go排序
- 歸併排序加例題排序
- 氣泡排序、歸併排序與快速排序比較排序
- 歸併排序 2020-09-20排序
- 演算法之歸併排序演算法排序
- 使用 Swift 實現歸併排序Swift排序
- 歸併排序的簡單理解排序
- 演算法:排序連結串列:歸併排序演算法排序
- 排序演算法之「歸併排序(Merge Sort)」排序演算法
- 淺談歸併排序:合併 K 個升序連結串列的歸併解法排序
- 演算法(氣泡排序,快排,歸併排序)演算法排序
- js 歸併演算法JS演算法
- 演算法學習 – 歸併排序演算法排序
- HDU 2689 【歸併排序求逆序對】排序
- 演算法學習 - 歸併排序演算法排序
- 歸併排序(C++_分治遞迴)排序C++遞迴
- 歸併排序MergeSort的C實現排序
- 歸併排序就這麼簡單排序
- rust-algorithms:9-歸併排序RustGo排序
- 歸併排序詳解及應用排序
- 逆序對的數量(歸併排序模板)排序
- 史上最清晰的「歸併排序」講解排序