ECMAScript5 還新增了2個歸并數(shù)組的方法:reduce()和reduceRight()。
這兩個都會迭代數(shù)組的所有項
reduce():從第一項開始逐個遍歷到最后。
reduceRight():從數(shù)組的最后一項開始,遍歷到數(shù)組的第一項。 這兩個方法都接受兩個參數(shù):在每一項上調(diào)用的函數(shù)(參數(shù)為:前一個值,當前值,項的索引,數(shù)組對象)
這個函數(shù)返回的任何值斗毆會作為第一個參數(shù)自動傳給下一項。第一次迭代發(fā)生在數(shù)組的第二項上,
因此第一個參數(shù)是數(shù)組的第一項,第二個參數(shù)是數(shù)組的第二項
和 作為歸并基礎的初始值。
使用 reduce() 方法可以執(zhí)行數(shù)組中所有值之和的操作,比如:
[js] view plaincopy
var values = [1, 2, 3, 4, 5];
var sum = values.reduce(function (prev, cur, index, array) {
return prev + cur;
});
alert(sum);
//結(jié)果一樣,只是方向相反而已
var sum2=values.reduceRight(function (prev,cur,index,array) {
return prev+cur;
});
alert(sum2);
歸并排序(Merge sort)是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。
歸并(Merge)排序法是將兩個(或兩個以上)有序表合并成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然后再把有序子序列合并為整體有序序列。
歸并排序是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合并,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為2-路歸并。