/ / Uso de recursión para mostrar el mismo resultado en la búsqueda binaria y la ordenación de inserción (Python) - python, recursión, búsqueda binaria, ordenación por inserción

Uso de la recursión para mostrar el mismo resultado en la búsqueda binaria y la ordenación de inserción (Python): python, recursión, búsqueda binaria, ordenación de la inserción

Quiero añadir en recursión en Binary Search yEl orden de inserción para que muestren el mismo resultado, pero al compilar, no pudo solucionarlo. ¿Dónde podría haber salido mal? Obteniendo errores de sangría inesperados para ambos.

Recursión mediante búsqueda binaria

def binarySearch(alist, item):
if len(alist) == 0:
return False
else:
midpoint = len(alist)//2
if alist[midpoint]==item:
return True
else if:
if item<alist[midpoint]:
return binarySearch(alist[:midpoint],item)
else:
return binarySearch(alist[midpoint+1:],item)

testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
print(binarySearch(testlist, 3))
print(binarySearch(testlist, 13))

Recursión usando ordenación por inserción (con una lista)

def insertionSort(list):

if i >= len(list):
return list
if list[i-1] > list[i]:
temp = list[i]
for a in range(0, i):
if temp < list[a]:
list.insert(a,temp)
del list[i+1]
break
return insertionSort(list, i+1)

while position > 0 and list[position - 1] > currentvalue:
list[position] = list[position - 1]
position = position - 1

list[position] = currentvalue

list = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
insertionSort(list)
print(list)

Respuestas

3 para la respuesta № 1

Los bloques de código se definen por su sangría. Por "bloque de código", me refiero a funciones, if sentencias, para bucles, mientras que bucles, y así sucesivamente. La sangría comienza un bloque y la unindenting lo termina. No hay llaves, corchetes o palabras clave explícitas. Esto significa que el espacio en blanco es significativo y debe ser consistente. En este ejemplo, el código de función (incluida la cadena de documentación) está sangrado cuatro espacios. No necesita ser cuatro espacios, solo debe ser consistente. La primera línea que no esté sangrada está fuera de la función.

por Sumérgete en Python


0 para la respuesta № 2

Tienes que saber usar sangría. en su código de búsqueda binario hay errores de sangría de varias formas y aquí está la solución:

def binarySearch(alist, item):
if len(alist) == 0:
return False
else:
midpoint = len(alist)//2
if alist[midpoint]==item:
return True
else:
if item<alist[midpoint]:
return binarySearch(alist[:midpoint],item)
else:
return binarySearch(alist[midpoint+1:],item)

testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
print(binarySearch(testlist, 3))
print(binarySearch(testlist, 13))

Pero su ordenación de inserción es otra historia. tiene variables no definidas y etc. Aquí hay otra implementación de ordenación por inserción:

def insertionSort(list,i):
if i<=1:
return
insertionSort(list, i - 1)
currentvalue = list[i - 1]
position = i - 2

while (position >= 0 and list[position] > currentvalue):
list[position + 1] = list[position]
position = position - 1
list[position + 1] = currentvalue


list = [0, 1, 2, 8, 13, 11, 19, 9, 42,]
insertionSort(list,len(list))
print(list)