兩個公升序等長陣列num1
和num2
,找出兩個陣列中所有元素裡的第k
小的數,兩個陣列長度均為n
,且n >= k >= 1
,寫出find_kth_number
返回第k
小的陣列
使用歸併排序的合併方法:
步驟:
1、兩個指標p1
,p2
分別指向num1
和num2
的頭
2、若num1[p1] <= num2[p2]
;p1++
;反之,p2++
3、while
迴圈k - 1
次,跳出迴圈的p1
和p2
所指數中誰小誰為所求
【注意】要考慮到超界問題(當p1
或p2
走到空的情況)
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 則第 ...