• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Rekurencyjna wersja wyszukiwania binarnego

Object Storage Arubacloud
0 głosów
661 wizyt
pytanie zadane 3 grudnia 2020 w Python przez Julia Dłutek Nowicjusz (170 p.)

Mam za zadanie zaimplementować rekurencyjną wersję algorytmu przeszukiwania binarnego (dla listy indeksowanej od 0) w taki sposób, aby zwrócił indeks, na którym znajduje się element. Rekurencja sprawia mi jeszcze trochę kłopotów, więc bardzo proszę o wskazówkę co w poniższym kodzie jest do poprawy. Z góry dziękuje za wszelką pomoc. :)

import math
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def binarysearch(list, k):
    center = int((math.floor(len(list)/2)))
    if k in list:
        if list[center] == k:
            return center
        elif list[center] < k:
            return center + binarysearch(list[center:], k)
        elif list[center] > k:
            return center + binarysearch(list[:center], k)
    else:
        return None

 

1 odpowiedź

0 głosów
odpowiedź 3 grudnia 2020 przez tangarr Mędrzec (154,860 p.)

Instrukcja

if k in list:

całkowicie zaburza sens przeszukiwania binarnego, wywal ją.
Jeżeli lista jest pusta, lub ma jeden element, który jest różny od poszukiwanego to zwróć None.
Resztę logiki zostawiasz, z małym wyjątkiem. Nie podoba mi się przeszukiwanie lewej części listy. Jeżeli element się tam znajduje to i tak otrzymasz indeks z prawej (lub nawet daleko poza listą). Niepotrzebnie dodajesz wartość center.
 

Podobne pytania

0 głosów
1 odpowiedź 142 wizyt
0 głosów
0 odpowiedzi 299 wizyt
pytanie zadane 15 października 2019 w C i C++ przez four Użytkownik (720 p.)
0 głosów
1 odpowiedź 1,051 wizyt
pytanie zadane 3 lipca 2019 w PHP przez BlvckFox Gaduła (4,240 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...