Problem z sortowaniem metodą shella.

0

Witam,
Mam pytanie odnośnie sortowania metoda shella. Napisałem program i ma on posortować każdy element wiersza osobno. Jest taki problem, że program owszem sortuje wierszami ale leci bez przerwy od początku do końca. Mógłby ktoś wytłumaczyć o co chodzi i w czym jest błąd. Tablica jest 10x10.

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

void sortowanie(int *tab,int N)
{
    int h,i,j,x;

//wartosc poczatkowego przesuniecia

    for(h =1; h<N; h=3*h+1);
    h=h/9;

// Proces sortowania
    while(h)
    {
        for(j=N-h-1; j>=0; j--)
        {
            x=tab[j];
            i=j+h;
            while((i<N)&&(x>tab[i]))
            {
                tab[i-h]=tab[i];
                i+=h;
            }
            tab[i-h]=x;
        }
        h/=3;
    }
}

int main()
{
    int w=10,k=10,d[w][k];
    int i,j,t2[100];

    FILE *dane,*wynik;
    dane=fopen("macierz.txt", "r");
    wynik=fopen("wyniki77.txt","w");

    printf("Macierz wczytana z pliku\n");
    for (i=0; i<w; i++)
    {
        for(j=0; j<k; j++)
        {
            fscanf(dane,"%d",&d[i][j]);
            printf("%5d",d[i][j]);
        }
        printf("\n");
    }
    printf("\n\n");
    fclose(dane);

//--------------
//zamiana tablicy dwuwymiarowej na jednowymiarowa
    int t = 0;
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            t2[t]=d[i][j];
            t++;
        }
    }
//-----------------------

    //sortowanie(d,100);  //nie sortuje tablicy jedoelementowej

//-------------------
//zamiana tablicy jendowymiarowej na dwuwymiarowa

    t = 0;
    for(i=0; i< 10; i++)
    {
        for(j=0; j < 10; j++)
        {
            d[i][j] = t2[t];
            t++;
        }
    }
//-----------------------------------
    sortowanie(d,100);

//-----------------------------------
//Wyświetlenie posortowanej tablicy

    for(i=0; i<w; i++)
    {
        for(j=0; j<k; j++)
        {

            printf("%5d",d[i][j]);

        }
        printf("\n");
    }

    fclose(wynik);
    return 0;
}

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