Problem z sortowaniem bąbelkowym

0

Witajcie, dlaczego ten kod sortowania mi nie działa (nie czyta ostatniej liczby):

 #include <stdio.h>

int main()
{
    int i,n,j,p,tab[999];
    scanf("%d", &n);

    for(i=0; i<n-1; i++)
    {
        scanf("%d", &tab[i]);

    }

    for(i=0; i<n; ++i)
    {
        for(j=0; j<n-1; ++j)
        {
            if (tab[j]>tab[j+1])
            {
                p=tab[j];
                tab[j]=tab[j+1];
                tab[j+1]=p;
            }
        }
    }

    for(i=0; i<n; ++i)
    {
        printf("%d ", tab[i]);
    }

    return 0;
}
0
for(i=0; i<n-1; i++)

czemu n-1 ?

0

Po pierwsze, to co @up, a po drugie nawet to sortowanie bąbelkowe da się napisać rozsądniej..

#include <stdio.h>
int main(){
    int i,n,j,p,*tab;
    scanf("%d",&n);
    tab=malloc(sizeof*tab*(n));
    for(i=0;i<n;i++)
        scanf("%d",&tab[i]);
    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++){
            if(tab[j]>tab[i]){
                p=tab[j];
                tab[j]=tab[i];
                tab[i]=p;
            }
        }
    }
    for(i=0;i<n;i++)
        printf("%d ",tab[i]);
    free(tab);
    return 0;
}

Nie mówiąc o tym, że są lepsze i wcale nie trudniejsze w implementacji algorytmy.

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