練習題 求第k小數(有序雙陣列)

2021-09-13 19:49:23 字數 1021 閱讀 4326

兩個公升序等長陣列num1num2,找出兩個陣列中所有元素裡的第小的數,兩個陣列長度均為n,且n >= k >= 1,寫出find_kth_number返回第k小的陣列

使用歸併排序的合併方法:

步驟

1、兩個指標p1,p2分別指向num1num2的頭

2、若num1[p1] <= num2[p2];p1++;反之,p2++

3、while迴圈k - 1次,跳出迴圈的p1p2所指數中誰小誰為所求

【注意】要考慮到超界問題(當p1p2走到空的情況)

int

find_kth_number

(int

*num1,

int*num2,

int n,

int k)

int

find_kth_number

(int

*num1,

int*num2,

int n,

int k)

//指標超界操作

if(p1 >= n)

return num2[p2];if

(p2 >= n)

return num1[p1]

;return num1[p1]

<= num2[p2]

? num1[p1]

: num2[p2]

;}

第2章 排序 第15節 有序陣列合併練習題

有兩個從小到大排序以後的陣列a和b,其中a的末端有足夠的緩衝空容納b。請編寫乙個方法,將b合併入a並排序。給定兩個有序int陣列a和b,a中的緩衝空用0填充,同時給定a和b的真實大小intn和intm,請返回合併後的陣列。class merge else while m 0 return a pyt...

第2章 排序 第15節 有序陣列合併練習題

有兩個從小到大排序以後的陣列a和b,其中a的末端有足夠的緩衝空容納b。請編寫乙個方法,將b合併入a並排序。給定兩個有序int陣列a和b,a中的緩衝空用0填充,同時給定a和b的真實大小intn和intm,請返回合併後的陣列。class merge else while m 0 return a pyt...

遞迴打卡2 求兩個有序陣列的第K小數

給定兩個有序陣列arr1和arr2,已知兩個陣列的長度分別為 m1 和 m2,求兩個陣列中的第 k 小數。要求時間複雜度o log m1 m2 例如 arr1 1,2,3 arr2 3,4,5,6 k 4。則第 k 小數為 3.例如 arr1 0,1,2 arr2 3,4,5,7,8 k 3 則第 ...