1. 程式人生 > >JS程式設計——合併兩個有序陣列

JS程式設計——合併兩個有序陣列

問題描述:已知有兩個升序排序的陣列arr1,arr2,現要求將其合併為一個單調非遞減的陣列,並將其輸出。

解決思路:歸併排序

時間複雜度:O(n)

程式碼:

function mergeArray(arr1,arr2){
	var ind1=0; //標記arr1的對比元素的初始索引值
	var ind2=0; //標記arr2的對比元素的初始索引值
	var arr=[]; //作為輸出的新陣列
	while(ind1<arr1.length && ind2<arr2.length){ //當arr1和arr2元素均未全部存入arr中,則從第一個元素開始進行比較,將較小的那個元素存入arr
		if(arr1[ind1]<=arr2[ind2]){
			arr.push(arr1.slice(ind1,ind1+1)[0]); //若arr1的對比元素小於arr2的對比元素,則將arr1的對比元素存入arr中
			ind1++;
		}else{
			arr.push(arr2.slice(ind2,ind2+1)[0]);
			ind2++;
		}
	}
	while(ind1<arr1.length){ //當arr2的元素已全部存入arr中,則直接將arr1剩餘的所有元素依次存入arr
		arr.push(arr1.slice(ind1,ind1+1)[0]);
		ind1++;
	}
	while(ind2<arr2.length){ //當arr1的元素已全部存入arr中,則直接將arr2剩餘的所有元素依次存入arr
		arr.push(arr2.slice(ind2,ind2+1)[0]);
		ind2++;
	}
	return arr;
}

結果測試: