🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27120

Re: B-drzewo w Pythonie

#27120
From: Łukasz Rekucki
Date: Sun, 03 Jan 2010 02:34
31 lines
2410 bytes
On Jan 3, 2:23 am, wodzik <wod...@noreply.com> wrote:
> Witam
>
> W ramach nauki Pythona postanowiłem ze zaimplementuje sobie b-drzewo w
> Pythonie. Wszystko fajnie, wstawianie zajmuje jakieś 100 linii bez
> komentarzy (2-3 razy mniej niż w c++), ale elementy nie są wstawione po
> kolei. Nie wiem czy źle coś zaimplementowałem, czy zrobiłem gdzieś jakiś
> głupi błąd, czy może nie do końca rozumiem działanie Pythona. Link do
> kodu:http://www.wklej.org/id/254477/
>
> Pozdrawiam wodzik

Najłatwiej to sprawdzić debuggerem. Twój błąd (możliwe, że nie jedyny)
znajduję się w tu:

brat.wskazniki = tmp.wskazniki[self.MAX + 1:]
tmp.wskazniki = tmp.wskazniki[:self.MAX + 1]

Węzły które były na liście "wskazniki" pamiętają rodzica swojego
rodzica, więc oprócz przypisania bratu części wskaźników, powinieneś
zrobić jeszcze, np.:

for item in brat.wskazniki:
    item.rodzic = brat


PS. Ogólnie twój kod nie jest zbyt pythoniczny (sposób użycia for ..
in, nazwy metod), a miejscami dość nieoptymalny, np:

self.tablica.append(liczba)
self.tablica.sort()
Technical Details
Message-ID: <a99ed17d-e589-4ea7-87bd-7f551f284852@u41g2000yqe.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!plix.pl!newsfeed1.plix.pl!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!feeds.phibee-telecom.net!feeder.news-service.com!postnews.google.com!u41g2000yqe.googlegroups.com!not-for-mail
References: <hhorn8$7ta$1@atlantis.news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!plix.pl!newsfeed1.plix.pl!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!feeds.phibee-telecom.net!feeder.news-service.com!postnews.google.com!u41g2000yqe.googlegroups.com!not-for-mail
From: Łukasz Rekucki <lrekucki@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: B-drzewo w Pythonie
Date: Sat, 2 Jan 2010 18:34:49 -0800 (PST)
Organization: http://groups.google.com
Lines: 40
Message-ID: <a99ed17d-e589-4ea7-87bd-7f551f284852@u41g2000yqe.googlegroups.com>
References: <hhorn8$7ta$1@atlantis.news.neostrada.pl>
NNTP-Posting-Host: 212.76.62.207
Mime-Version: 1.0
X-Trace: posting.google.com 1262486089 30469 127.0.0.1 (3 Jan 2010 02:34:49 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Sun, 3 Jan 2010 02:34:49 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: u41g2000yqe.googlegroups.com; posting-host=212.76.62.207;  posting-account=5fpXZwoAAADF-CUdCuJ-FpYxG8__-wRx
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US)  AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit