Sortowanie przez scalanie - błąd...

0

witam ... Problem występuje przy sortowaniu tablicy.

W chwili wydruku na konsoli posortowanej już tablicy jako 0 iteracja zawsze wskakuję wartość -1... chodź reszta sortowania przebiega pomyślnie.

Plik do programu zamieszczam w załączniku gdyż jest jakiś problem z wysyłaniem przez forum kodu.

0

ideone twierdzi że w kodzie jest segfault.
Zresztą co tu się dziwić? Masz funkcje rekurencyjną bez warunku stopu...
A kod wstawia się tak:

#include<stdio.h>
#include<stdlib.h>

void MergeSort (int left,int right);

int d[5] = {3, 6 , 4, 10, 1};
int p[5];

int main ()
{
    int x = 0;

    MergeSort(0, 5);

    for(; x < 6; x++)
        printf("%d ", p[x]);

    printf("\n");

    for(x = 0; x < 6; x++)
        printf("%d ", d[x]);

    return 0;
}

void MergeSort (int left,int right)
{
    int mid = (left + right) / 2;
    int i = 0;
    int tmp_l = left;
    int tmp_m = mid;

    MergeSort(left, mid);
    MergeSort(mid+1, right);

    tmp_l = left;
    tmp_m = mid;

    for (i = left; i <= right; i++)
        p[i] = ((tmp_l == mid) || ((tmp_m <= right) && (d[tmp_l] > d[tmp_m]))) ?  d[tmp_m++] : d[tmp_l++];

    for (i = left; i <= right; i++)
        d[i] = p[i];
}
0

rozumiem że się tak wstawia ale mi wyskakuje błąd... przy próbie ...

0

Tak czy siak, zastanów się kiedy twoja funkcja MergeSort() się zatrzyma. Bardzo mnie to ciekawi.

0

najmocniej przepraszam pomieszały mi się 2 kody ehh...

Załączam także błąd który mi wyskakuję przy próbie wklejenia kodu.

0

http://ideone.com/Ncc9A
gdzie widzisz problem?

0

problem polega iż chyba codeblocks albo świruje albo linuks jakoś inaczej przetwarza te dane...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0