予想される線形時間でリストからn番目に大きい要素を選択するPythonプログラム
線形時間計算量でリストからn番目に大きい要素を選択する必要がある場合、2つの方法が必要です。最大の要素を見つける1つの方法と、リストを2つの部分に分割する別の方法。この区分は、ユーザーが指定した「i」の値によって異なります。この値に基づいてリストが分割され、最大の要素が決定されます。
以下は同じのデモンストレーションです-
例
def select_largest(my_list, beg, end, i): if end - beg <= 1: return my_list[beg] pivot_val = start_partition(my_list, beg, end) k = end - pivot_val if i < k: return select_largest(my_list, pivot_val + 1, end, i) elif i > k: return select_largest(my_list, beg, pivot_val, i - k) return my_list[pivot_val] def start_partition(my_list, beg, end): pivot_val = my_list[beg] i = beg + 1 j = end - 1 while True: while (i <= j and my_list[i] <= pivot_val): i = i + 1 while (i <= j and my_list[j] >= pivot_val): j = j - 1 if i <= j: my_list[i], my_list[j] = my_list[j], my_list[i] else: my_list[beg], my_list[j] = my_list[j], my_list[beg] return j my_list = input('Enter the list of numbers.. ') my_list = my_list.split() my_list = [int(x) for x in my_list] i = int(input('Enter the value for i.. ')) ith_largest = select_largest(my_list, 0, len(my_list), i) print('The result is {}.'.format(ith_largest))
出力
Enter the list of numbers.. 34 67 12 0 999 Enter the value for i.. 1 The result is 999.
説明
-
「select_largest」という名前のメソッドが定義されています。このメソッドは、リスト、開始、終了を取得し、「i」値がパラメーターとして取得されます。
-
「i」の値に応じてリストを2つの部分に分割する、「start_partition」という名前の別のメソッドが定義されています。
-
このメソッドは「select_largest」メソッドで呼び出されます。
-
「select_largest」も同じ関数内で再度呼び出されます。これが再帰の仕組みです。
-
数字はユーザーからの入力として取得されます。
-
デフォルト値に基づいて分割されます。
-
繰り返されます。
-
「i」の値はユーザーから取得されます。
-
この「i」の値に基づいて、リストは2つの部分に分けられます。
-
「select_largest」メソッドは、リストの1つで呼び出されます。
-
出力はコンソールに表示されます。
-
配列内の最大の要素を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n): #maximum element max = arr[0] # traverse the whole loop for
-
最大値を持つPythonリストから要素を見つける方法は?
最大値の要素を見つけるには、リストを引数としてmax()関数を呼び出す必要があります。 max関数は、リストを繰り返し処理して、最後に到達するまで検出した最大値を追跡します。次に、この値を返します。 例 my_list = [2, 3, 1, 5, -1] print(max(my_list)) 出力 これにより、出力が得られます- 5 インデックスとmax要素が発生したすべての場所も必要な場合は、enumerateメソッドを使用できます。 enumerateメソッドは、最初のインデックスにインデックスがあり、2番目にオブジェクトがあるオブジェクトのタプルを作成します。 例 my_list