リスト内で最も近い数値を見つける方法: Min() と二分法?

Barbara Streisand
リリース: 2024-11-10 08:12:02
オリジナル
829 人が閲覧しました

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(n) です。複雑さは O(log n) であり、リストが大きい場合にパフォーマンスが大幅に向上します。

以上がリスト内で最も近い数値を見つける方法: Min() と二分法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート