求遞增陣列中絕對值最小的數

2022-03-05 17:19:30 字數 600 閱讀 4993

思路很簡單:

如果陣列頭尾,不是一負一正,則可以直接判斷。

如果是一負一正: 直接二分搜尋最小正數。再與前面的那個數比較絕對值。

求遞增陣列中絕對值最小的數

#include

<

cstdio

>

#include

<

cassert

>

//從遞增陣列(允許重複)中找出絕對值最小的數

intbsearch(

const

intarr, size_t len)  

if(arr[low] 

>

-arr[low -1

]) return

arr[low -1

];return

arr[low];

}int

main()

;const

intsz 

=sizeof

(arr) 

/sizeof

(arr[

0]);

printf(

"%d\n

", bsearch(arr, sz));

}

遞增陣列中絕對值最小的數

求乙個遞增的整數陣列中,絕對值最小的數。陣列中可以有正負整數和0,要求複雜度 o logn 思路 有序陣列,用二分查詢。如果乙個數大於零,那麼要找的數在他左邊或者是他本身。如果乙個數小於零,那麼要找的數在他右邊或者是他本身。遞迴查詢。public class solution if array en...

如何求陣列中絕對值最小的數?

有乙個公升序排列的陣列,陣列中可能有正數,負數或0,求陣列中元素的絕對值最小的數。例如,陣列 10,5,2,7,15,50 該陣列中絕對值最小的數是2 def fingmin1 array if array none or len array 0 print 輸入引數不合理 return 0 min...

找出有序陣列中絕對值最小的數

假設陣列是從小到大排序,數值可能為負數 0 正數。思路一 可以一次性遍歷一遍,找出絕對值最小值,此時時間複雜度為o n 缺點是沒有利用陣列是有序的這一特點。思路二 陣列有序,可以利用二分查詢的特性。中間的數是正數,往後找 中間的數是負數,往前找。問題的本質是找到正數的最小值,或負數的最大值,分析以下...