首頁 >後端開發 >Python教學 >如何找出清單中最接近的數字:Min() 與二分法?

如何找出清單中最接近的數字:Min() 與二分法?

Barbara Streisand
Barbara Streisand原創
2024-11-10 08:12:02877瀏覽

How to Find the Closest Number in a List: Min() vs. Bisection Method?

找出列表中最接近的數字

給定一個未排序整數列表,確定最接近給定值的數字是一種常見的程式設計任務。為了實現這一點,存在多種方法。

使用 min() 函數

如果清單未排序,min() 函數提供了快速且有效率的解。它考慮列表中的每個元素,並傳回與提供的數字的絕對差值最小的元素。

>>> myList = [4, 1, 88, 44, 3]
>>> myNumber = 5
>>> min(myList, key=lambda x:abs(x-myNumber))
4

二分法

如果列表已排序或可以有效排序,二分法是一種更有效的方法。需要 O(log n) 時間,其中 n 是列表中元素的數量。

def takeClosest(arr, target):
  left = 0
  right = len(arr) - 1
  while left <= right:
    mid = (left + right) // 2
    if arr[mid] == target:
      return arr[mid]
    elif arr[mid] < target:
      left = mid + 1
    else:
      right = mid - 1
  if left == 0 or arr[left-1] > target:
    return arr[left]
  return arr[left-1]

min() 函數方法的時間複雜度為O(n),而二分法的時間複雜度複雜度為O(log n),為較大的列表提供了顯著的性能優勢。

以上是如何找出清單中最接近的數字:Min() 與二分法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn