Javascript合併演算法的實現(遞迴 迭代)

2021-09-24 08:21:36 字數 744 閱讀 7242

使用分治法將需要排序的內容一分為二,二分為四,四分為八……

將內容分解到通過最後單獨比較大小的粒度,進行排序,然後將內容八並為四,四並為二,二並為一。

1、遞迴實現:

function merge(left,right)

}return result.concat(left).concat(right);

}function mergesort(items)

var half = math.floor(items.length/2),

left = items.slice(0,half),

right = items.slice(half);

return merge(mergesort(left),mergesort(right));

}複製**

邏輯比較簡單,乙個是merge函式,用來排序內容。mergesort函式用來將內容劃分到最小粒度。缺點是當內容長度到達一定限度後,會發生棧溢位錯誤。

2、迭代實現:

function mergesort(items)

var result = ;

for(var i=0;iif(len%2)

var lim = len/2;

while(lim>=1)

複製**

實現邏輯和遞迴呼叫不同,迭代的實現方式,是通過操作某乙個陣列,合併該陣列實現的。不會存在棧溢位問題,但是效率會低於遞迴。

JavaScript演算法 合併排序 分治策略

將排序陣列拆分成若干個子陣列,然後進行合併 space o n 對所有元素進行插入排序 對所有元素執行 array.sort 不在演算法考量內 運用分治策略,拆分成兩部分進行合併 假設現有陣列 11,33,55,22,44 分析 尋找迴圈不變式 aa1 a2k a回寫位置,i a1,j a2 11,...

Javascript 物件(object)合併

物件的合併 需求 設有物件 o1 o2,需要得到物件 o3 var o1 o2 則 var o3 方法1 使用jquery的extend方法 方法定義 jquery.extend deep target,object1,objectn 用乙個或多個其他物件來擴充套件乙個物件,返回被擴充套件的物件。如...

javascript中陣列及物件的合併

1 陣列遍曆法 var arr1 1,2,3,4 var arr2 2,3,4,5 type 1 for var i 0 i arr1.length i console.log arr2 2,3,4,5,1,2,3,4 type 2 for var item of arr1 2 concat方法 v...