1. 程式人生 > >兩種方法實現Python二分查詢演算法 兩種方法實現Python二分查詢演算法

兩種方法實現Python二分查詢演算法 兩種方法實現Python二分查詢演算法

兩種方法實現Python二分查詢演算法

 

一.

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 arr = [ 1 , 3 , 6 , 9 , 10 , 20 , 30 ] def findnumber(l,h,number):
     mid = (l + h) / / 2      if arr[mid] = = number:         
print ( "找到了" + str (mid))      elif arr[mid]<number:          l = mid          return findnumber(mid + 1 ,h,number)      elif arr[mid]>number:          h = mid          return findnumber( 0 ,mid - 1 ,number)      else :          print ( "沒有找到" )   findnumber( 0 , len (arr) - 1 , 10 )

  二.

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def binary_search(data_source,find_n):      #取中位數      mid = int ( len (data_source) / 2 )        if len (data_source)> = 1 :          if data_source[mid]>find_n:  #中位數大於要查詢的數,則要查詢的數在左半部分,繼續呼叫二分演算法進行查詢              binary_search(data_source[:mid],find_n)          elif data_source[mid]<find_n:  #中位數小於要查詢的數,則要查詢的數在右半部分              binary_search(data_source[mid:],find_n)          else :   #中位數等於要查詢的數              print ( "找到了:" ,data_source[mid])      else :          print ( "沒有找到" )           data = list ( range ( 1 , 100000 )) binary_search(data, 88888 )

一.

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 arr = [ 1 , 3 , 6 , 9 , 10 , 20 , 30 ] def findnumber(l,h,number):      mid = (l + h) / / 2      if arr[mid] = = number:          print ( "找到了" + str (mid))      elif arr[mid]<number:          l = mid          return findnumber(mid + 1 ,h,number)      elif arr[mid]>number:          h = mid          return findnumber( 0 ,mid - 1 ,number)      else :          print ( "沒有找到" )   findnumber( 0 , len (arr) - 1 , 10 )

  二.

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def binary_search(data_source,find_n):      #取中位數      mid = int ( len (data_source) / 2 )        if len (data_source)> = 1 :          if data_source[mid]>find_n:  #中位數大於要查詢的數,則要查詢的數在左半部分,繼續呼叫二分演算法進行查詢              binary_search(data_source[:mid],find_n)          elif data_source[mid]<find_n:  #中位數小於要查詢的數,則要查詢的數在右半部分              binary_search(data_source[mid:],find_n)          else :   #中位數等於要查詢的數              print ( "找到了:" ,data_source[mid])      else :          print ( "沒有找到" )           data = list ( range ( 1 , 100000 )) binary_search(data, 88888 )