合併兩個排序的陣列

2021-06-21 15:04:32 字數 979 閱讀 1167

#includeusing namespace std;

/*有兩個排序的陣列a1和a2,內存在a1的末尾有足夠多的空餘空間容納a2.

實現乙個函式,把a2中的所有數字插入到a!中並且所有的數字是排序的。*/

/*思路:先計算出兩個陣列中元素的總個數,然後從尾到頭比較array1和array2中的數字,

並把較大的數字複製到array1的合適位置。*/

//num1和num2分別表示array1和array2中數字的個數, length表示array1的長度。

void merge(int array1, int array2, int length, int num1, int num2)

else

array1[k--] = array2[j--];

} if(i >= 0)

if(j >= 0) }

/*判斷兩個陣列是否相等*/

bool issame(int a, int b, int sum1, int sum2)

/*測試***/

void test(char* testname, int array1, int array2, int length, int num1, int num2, int expect, int k)

{ if(testname != null)

cout << testname << "begins"<< endl;

merge(array1, array2, length, num1, num2);

/*列印出array1中的元素*/

cout << "array1:";

for(int i = 0; i < num1 + num2; i++)

cout 輸出結果為:

合併兩個已排序的陣列

題目描述1 有兩個排序的陣列a1和a2,內存在a1的末尾有足夠多的空餘空間容納a2。請實現乙個函式,把a2中的所有數字插入a1中,並且所有的數字是排序的。void mergelist int la,int a length,int lb,int b length for int i 0 i a le...

165 合併兩個排序陣列

原題 您在真實的面試中是否遇到過這個題?是 標籤鍊錶 思路 逐個比較l1與l2的結點,將較小的掛載在結果鍊錶上。小技巧 可以建立乙個資料無效的結點作為標誌頭節點,返回其next。ac definition of singly linked list class listnode class solu...

LintCode 合併兩個排序好的陣列

題目 合併兩個排序好的陣列,要求新陣列也是有序的 分析 假設兩個陣列為a和b,新陣列為c。a和b的元素比較,小的放在c中,並且指標 1。臨界條件很重要 假設a的指標越界 退出迴圈的條件 那麼b的指標肯定沒有越界 為什麼?看 並且b未比較的元素一定比a所有元素大 a指標都越界了,說明a最後乙個元素進入...