こんにちはそこに:私はソートされたリストを使ってバイナリ検索を使用するプログラムを書いていました。次のようにそれが動作するはずです:それは1 2としている場合、プログラムは数字に3を探す必要があります3 1 2 3Python 3バイナリ検索でソートされた変数(数値のリスト)
のpython find.py 1 2及び3
それは本当と印刷見つかった針を返す必要があります3、 falseを返す必要がありますし、印刷が見つからなかった場合、それは1 2と3にない場合は....
def binary_search(needle, haystack):
first = 0
last = len(haystack) - 1
itemlist = str(input(haystack))
sorted(itemlist)
while first <= last:
mid = (first + last)/2
if itemlist[mid] == needle :
print("Found the needle in the haystack")
return True
elif needle < itemlist[mid]:
last = mid - 1
else:
first = mid + 1
if not True:
print("Did not find the needle in the haystack")
return False
ので、私は、標準のバイナリサーチアルゴリズムを実装しようとしたが、私が渡って来るすべてのバージョンにはありませんあなたが来るすべての番号で検索する必要がある項目として最初の番号を取る... 私の質問は、どのように私は何ですか最初の変数を「アイテム」とし、アイテムを含むかもしれないし、含まないかもしれないリストとして来るものはどれですか?
また、xの長さのリストをソートする必要があります。ソートされた関数を試しましたが、リストは任意の長さにできるので、変数をソートする必要がありますか?私はちょっとそこにこだわっています....これらの話題に関するヒント?
お返事ありがとうございました!しかし、ここで私は多くを助けてくれました:typeError:リストインデックスは浮動小数点ではなく、整数またはスライスでなければなりません –
そしてエラーは行と関係しています:binary_search(int(needle)、sorted haystack [mid] == needleの場合: –
@mhawke timsort(Pythonのデフォルトソートアルゴリズム)は、複雑さがO(n log n)の場合_最悪の場合のみ_オンです。すでにソートされたデータは線形です。 –