兩個有序陣列,判斷乙個給定的數p在合併後的位置

2021-07-05 03:36:28 字數 490 閱讀 2568

有兩個有序陣列,給定的乙個數p(p是兩個陣列中的任意乙個數,也可能同時存在於兩個陣列之中),判斷這個數p在兩個陣列合併後的大陣列的位置。

要求:空間複雜度為o(1),即不能真正合併兩個陣列

以下**實現,其時間複雜度為o(log(m)+log(n)):

#include #includeusing namespace std;

int getkth(vectorarrays,int left,int p)

} return i;

}int find(vectora,int aleft,int aright,vectorb,int bleft,int bright ,int p)

if(bleft>=bright)

if(a[amid]<=b[bmid])else

}int main () ;

int b=;

vectorai;

vectorbi;

for(int i=0;i

合併兩個有序數組成乙個有序陣列

題目 有兩個陣列a和b,將它們合併成陣列c,需要c也是有序陣列。有兩種實現思路 定義乙個新陣列,長度為兩個陣列長度之和,將兩個陣列都copy到新陣列,然後排序。給兩個陣列分別定義乙個下標,最大長度是陣列長度減一,按位迴圈比較兩個陣列,較小元素的放入新陣列,下標加一 注意,較大元素對應的下標不加一 直...

兩個有序陣列合併為乙個有序陣列

思想 先依次比較兩個陣列,按照小的就傳入新的陣列。當這次比較完之後可能有乙個陣列的長度很長,留下一些陣列,然後在新陣列的末尾插入即可。1 class arraysort 2else 1920 後面連個while迴圈是用來保證兩個陣列比較完之後剩下的乙個陣列裡的元素能順利傳入 21 while i a...

兩個有序陣列合併成乙個有序陣列

public class arraysort int b int c mergearray a,b for int n c 合併陣列 public static int mergearray int a int b else return flag package com.bi 兩個有序陣列合併成乙...