リストをソートせずに、要素を削除せずに数字のリストの最初の3つまたは4つの小さな数字を見つける方法を知りたい。つらい時私に最小の第三または第四の最小数を与えるためにコードを変更した、しかし、私は数字のリストの最初の3つの最小値を見つける方法
def second_smallest(numbers):
m1, m2 = float('inf'), float('inf')
for x in numbers:
if x <= m1:
m1, m2 = x, m1
elif x < m2:
m2 = x
return m2
:最初の2つの最小の数値(分)を求める細かい仕事をしてその下にいくつかのコードを、私を発見しました。
m1, m2, m3= float('inf'), float('inf'), float('inf')
for x in min_of_summed_vals:
if x < m1:
m1, m2 = x, m1
elif x < m2:
m2 = x
elif x > m2 and x < m3:
m3 = x
任意の提案をしてください:ここに私の変更されたコードは、その下に、時々ではなく、すべての時間を動作しているようですか?最悪の場合、線形時間でソートされていない要素の配列にk番目の最大値/最小値を見つけるため
リストをn回実行して最初のn-1回目にn番目に小さい番号を見つけようと考えましたか? n番目のループでは、最小の項目は元のリストのn番目に小さい番号です。 – Alec