本文目錄一覽:
【python】數組中絕對值最小的數?
題目:有一個升序的數組,數組中可能有正數、負數或者0,求數組中元素的絕對值最小的數。例如,數組[-10, -5, -2, 7, 15, 50],該數組中絕對值最小的數是-2。
分析:二分法。該題可分為以下三種情況:
(1)如果數組第一個元素為非負數,那麼minNum = arr[0]
(2)如果數組最後一個值為負數,那麼minNum = arr[-1]。
(3)如果數組中既有正數又有負數,首先找到正數與負數的分界點,如果分界點恰好為0,那麼0為最小值。否則通過比較分界點左右的正數與負數的絕對值來確定最小數。
如何查找正數與負數的分界點呢?採用二分法,主要思路:取數組中間位置的值a[mid],並將它與0值比較,比較結果分為如下三種情況:
(1)如果a[mid] == 0,那麼這個數就是絕對值最小的數。
(2)如果a[mid] 0,a[mid – 1] 0,那麼通過比較a[mid]與a[mid – 1]的絕對值就可以找到數組中絕對值最小的數;如果a[mid – 1] == 0, 那麼a[mid – 1]就是要找的數;否則接着在數組的左半部分查找。
(3)如果a[mid] 0,a[mid + 1] 0,那麼通過比較a[mid]與a[mid +1]的絕對值就可以找到數組中絕對值最小的數;如果a[mid + 1] == 0, 那麼a[mid + 1]就是要找的數;否則接着在數組的右半部分查找。
code:
def findMinNum(arr):
if arr is None or len(arr) = 0:
return
# [1] 數組中沒有負數
if arr[0] = 0:
return arr[0]
# [2] 數組中沒有正數
if arr[-1] = 0:
return arr[-1]
# [3] 數組中既有正數又又負數
mid = None
absMin = None
begin = 0
end = len(arr) – 1
while begin end:
mid = begin + (end – begin) 1
# 如果arr[mid] == 0,則是絕對值最小的數
if arr[mid] == 0:
return 0
# 如果大於0, 正負數的分界點在左側
elif arr[mid] 0:
# 繼續在數組的左半部分查找
if arr[mid – 1] 0:
end = mid – 1
elif arr[mid – 1] == 0:
return 0
# 找到正負數的分界點
else:
break # 如果小於0, 在數組右半部分查找
else:
# 在數組的右半部分繼續查找
if arr[mid + 1] 0:
begin = mid + 1
elif arr[mid + 1] == 0:
return 0
else:
break
# 獲取正負數分界點處絕對值最小的值
if (arr[mid] 0):
if arr[mid] abs(arr[mid – 1]):
absMin = arr[mid]
else:
absMin = arr[mid – 1]
else:
if abs(arr[mid]) abs(arr[mid + 1]):
absMin = arr[mid]
else:
absMin = arr[mid + 1]
return absMin
if __name__ == “__main__”:
arr = [-10, -5, -2, 7, 15, 50]
print(findMinNum(arr))
python 怎麼取列表中最小的數
求一個列表中的最小值,可以用min函數。例如:
li = [100,300,200,500,56,23,89]
print(“列表中的最小值是:”,min(li))
Python 隨機產生[0,100]以內的隨機數,找到最大值和最小值並交換位置
過程如圖所示:
獲取1~100以內的隨機數有兩種方法:
方法1:可以通過Math類中的random方法獲取隨機數,再乘以100加1,然後轉換為int類型即可。
方法2:可以通過Random類中的nextInt方法獲取隨機數。
擴展資料
函數使用補充說明
1、random是用於生成隨機數的,可以利用它隨機生成數字或者選擇字符串。
random.random(),用於生成一個隨機浮點數:range[0.0,1.0)。
random.uniform(a,b),用於生成一個指定範圍內的隨機浮點數,a,b為上下限,只要a!=b,就會生成介於兩者之間的一個浮點數,若a=b,則生成的浮點數就是a。
random.randint(a,b),用於生成一個指定範圍內的整數,a為下限,b為上限,生成的隨機整數a=n=b;若a=b,則n=a;若ab,報錯。
random.randrange(, stop [,step]),從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數缺省值為1。
random.choice(sequence),從序列中獲取一個隨機元素,參數sequence表示一個有序類型,並不是一種特定類型,泛指list,tuple,字符串等。
random.shuffle(x[,random]),用於將一個列表中的元素打亂。
random.sample(sequence,k),從指定序列中隨機獲取k個元素作為一個片段返回,sample函數不會修改原有序列。
2、Python中有join()和os.path.join()兩個函數,具體作用如下:
join():連接字符串數組。將字符串、元組、列表中的元素以指定的字符(分隔符)連接生成一個新的字符串。
os.path.join():將多個路徑組合後返回。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/305101.html