找出列表中最接近的數字
給定一個未排序整數列表,確定最接近給定值的數字是一種常見的程式設計任務。為了實現這一點,存在多種方法。
使用 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中文網其他相關文章!