1つの インポートランダム 2 3 #二分查找-递归实现 4 デフbinary_search(ARR、左、右、NUM): 5 であれば左> 右: 6 リターン -1 7 半ば=(左+右)// 2 8 もし NUM < [中間] ARR: 9 右=ミッド- 1 10 のelif NUM> [中間] ARR: 11 左=ミッド+ 1 12 他: 13 リターンミッド 14 リターンbinary_search(ARR、左、右、NUM) 15 16 IF __name__ == ' __main__ ' : 17 ARR = [11、32、51、21であることは42 ,. 9 ,. 5 ,. 6 ,. 7 ,. 8である] 18れる プリント(ARR) 19。 arr.sort() 20は、 プリント(ARR) 21であり、 22は random.randint = NUM(0、52である) 23は、 プリント(' :見つける番号' 、NUM) 24 ( - 1 ARR、0、LEN(ARR)RES = binary_search 、NUM) 25 IF -1 == RES: 26であります 印刷(「見つからない!」) 27 他: 28 プリント(' 見出され、インデックス' 、RES) 29 プリント(' ************************************************************ ' ) 30 NUM = ARR [random.randint(0 、LEN(ARR))] 31であり、 印刷(' :見つける番号' 、NUM) 32 。 - RES = binary_search(ARR、0、LEN(ARR)1 、NUM) 33は、 IF -1 == :RES 34は プリント(' 見つからない!「) 35 、他: 36 印刷(」見つけ、インデックスを"、RES)