排序陣列合併

2021-07-22 17:56:22 字數 572 閱讀 7168

題目:

兩個排好序陣列a、b。 a的末尾有充足記憶體容納b。 實現函式,將b中所有數字插入到a中且是排序的

思路:定義三個指標:  pa1 指向插入資料前a的末尾元素 ;  pa2指向插入資料後a的末尾元素;pb1指向b的末尾元素

若插入資料前a大小為len1, b大小為len2,  則pa2指向len1+len2-1的位置

從後往前插入

**:#include

#include

using namespace std;

void merge(vector&veca, vector&vecb)

else if (0 > pa1)

else

else

}    }}

int main()

;int b = ;

vectorveca(a, a+9);

vectorvecb(b, b+10);

merge(veca, vecb);

for (int i = 0; i < veca.size(); ++i)

system("pause");

}

排序陣列合併

在leetcode上也有的,從後面合併就好了。只是以前的 風格不如這個好,尤其是鍊錶合併的時候也是。修改一下,但是在比較的時候犯了個錯誤,就是如果要用 if p1 0 這樣肯定是不行的,因為每次比較都會修改sidx,這樣不對,而是只有 它比small大的時候才修改。記住這個錯誤。void merge...

演算法 多個無序陣列合併排序

思路1 先單獨排序,再合併 注意 sorted函式是又返回值的,不改變原來list,注意 若是多個陣列,則可以對其中所有第乙個數進行再排序 def sort1 list1,list2 list1 sorted list1 list2 sorted list2 res while len list1 ...

演算法有序陣列合併

最近看一本書上有乙個面試題,原題目是 有兩個遞增陣列 a1 a2,a1的記憶體空間足夠長,現在要求合併 a2到a1,並且要求移動次數最小 面試的時候 我們盡量要以 最高效的方式完成 下面是此題 o n 解法。合併 void mergearray int arra1,int arra2,int nle...