Kezdőoldal » Számítástechnika » Programozás » Miért nem működik a quicksort?

Miért nem működik a quicksort?

Figyelt kérdés

void quicksort(int* t, int b, int j)

{

int k;

if (b<j)

{

k = feloszt(t,b,j);

quicksort(t,b,k-1);

quicksort(t,k+1,j);

}

}

void feloszt(int* t, int bal, int jobb)

{

int i, j, x, csere;

x = t[jobb];

i = bal - 1;

for (j=bal; j<jobb; j++)

{

if (t[j]<=x)

{

i++;

csere = t[i];

t[i] = t[j];

t[j] = csere;

}

}

csere = t[i+1];

t[i+1] = t[jobb];

t[jobb] = csere;

return i+1;

}


Ez alapján írtam: [link]

Mégsem jó valami...

És quicksort(t,0,n-1)-re hívtam meg.



2017. máj. 12. 19:08
 1/4 anonim ***** válasza:
Debuggold.
2017. máj. 12. 19:15
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

Debugoltam, az első x=t[jobb] -nál ad ki hibát, az x érték felvesz egy óriási számot, nem tudom miért...


Wikipédia szerint:

algorithm quicksort(A, lo, hi) is

if lo < hi then

p := partition(A, lo, hi)

quicksort(A, lo, p – 1)

quicksort(A, p + 1, hi)


algorithm partition(A, lo, hi) is

pivot := A[hi]

i := lo - 1

for j := lo to hi - 1 do

if A[j] ≤ pivot then

i := i + 1

swap A[i] with A[j]

swap A[i+1] with A[hi]

return i + 1


Ugyanaz amit írtam. Nem tudok rájönni a hibára, pedig ezen gondolkodom egy órája.

2017. máj. 12. 19:17
 3/4 anonim ***** válasza:
Mivel van feltöltve a tömb? Biztos létezik a tömb azon indexe?
2017. máj. 12. 19:29
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:

a feloszt nem void, hanem int:))

hulye vagyok.

igy mar mukodik

2017. máj. 12. 19:30

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!