J'essaie d'exécuter une recherche binaire pour trouver un élément dans un tableau trié de manière circulaire. Je reçois une erreur de type que je ne semble pas comprendre. Toutes les suggestions/modifications seront appréciées.Recherche binaire Réseau à rotation circulaire
voici mon code:
def Binarysearch(a, low, high, x):
if low > high:
return -1
else:
mid = (low + high)/2
if x == a[mid]:
return mid
elif a[mid] <= a[high]:
if x > a[mid] and x <= a[high]:
return Binarysearch(a, mid+1, high, x)
elif a[mid] >= a[low]:
if x >= a[low] and x < a[mid]:
return Binarysearch(a, low, mid-1, x)
elem_list = [6, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5]
x = int(raw_input('enter search elemet'))
lenlist = len(elem_list)
result = Binarysearch(elem_list, 0, lenlist-1, x)
if result == -1:
print "Not found"
else:
print "Found it", elem_list[result]
J'obtiens l'erreur:
Line32: TypeError: list indices must be integers, not NoneType
pas une réponse complète, mais essayez de changer '' et' à or' dans les contrôles 'if' – davedwards
essayé. se est débarrassé de l'erreur, mais il ne peut toujours pas trouver l'élément –
Aussi, essayez de changer 'def Binarysearch (un, bas, haut, x): si faible> haut: retour bas' – davedwards