Wpis z mikrobloga

#programowanie #cpp
http://pastebin.com/BXfpEFyF
Coś jest nie tak w funkcji merge_. Nie umiem dojść co. :( Tak jakbym gdzieś przesuwała i odczytywała randomowe komórki z pamięci a nie elementy tablic. Ale nie mogę znaleźć gdzie. Czy mogłabym poprosić o pomoc?
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Axoi: Masz jakieś problemy z +/-1. Wygląda, jakby q w mergeSort było ostatnim elementem lewego przedziału, ale w merge było używane jako pierwszy element prawego, a może jako obie te rzeczy naraz (zauważ, że n1+n2 == r-p, a elementów jest tam r-p+1).

Przenazwij zmienne na coś więcej mówiącego, możliwe, że w trakcie błąd sam stanie się widoczny.

Poza tym, lepszą reprezentacją przedziału jest pierwszy i
zaostatni indeks, zamiast
  • Odpowiedz
możliwe


@Axoi: @frax: ma rację + plus zapomiałaś o tym, że jeśli zostanie kilka elementów w L lub R to nie kopiujesz ich do tablicy d. Poza tym masz sporo memory leaków jak nie zwalniasz L i R. Ogólnie udało mi się poprawić Twój program. Jak chcesz mogę podrzucić Ci patcha, no chyba że sama wolisz dojść do sedna.
  • Odpowiedz
@8tab: Memory leaki naprawiłam, ostatnio pisałam w innym języku w którym dzieje się to automatycznie po opuszczeniu funkcji. :P Nie lubię cpp za to i za parę innych rzeczy też...

Chciałabym zobaczyć tego patcha.
  • Odpowiedz