Sortowanie bąbelkowe - nie działa poprawnie

0

Siemka mam problem z takim zadaniem:

#include <stdio.h>
#define N 10
int main()
{
    double *b[N], a[N] = { 4.8, 2.1, 2.8, 3.1, 5.8, 1.3, 4.0, 3.6, 7.5, 3.8 };
    int k;
    for (k = 0; k < N; ++k)
        b[k] = a + k;
    / tu uzupelnic /
}

Program ma posortowac wskazywane przez b wartosci z tablicy a od najmniejszej do najwiekszej. Ale kompletnie nie ogarniam jak to zrobic przez te wskazniki :(

probowalem to zrobic jakos tak ale efekty zadne:

#include <stdio.h>
#define N 10


void wypisztab(double tab[])
{
    int i;
    for (i = 0; i < N; i++)
        printf("%f ", tab[i]);
}


int main()
{
    double *b[N], a[N] = { 4.8, 2.1, 2.8, 3.1, 5.8, 1.3, 4.0, 3.6, 7.5, 3.8 };
    int k;
    for (k = 0; k < N; ++k)
    {
        b[k] = a + k;
    }


    for (k = 0; k < N - 1; ++k)
    {
        if (*b[k] > *b[k + 1])
        {
            double e;
            e = *b[k];
            *b[k] = *b[k + 1];
            *b[k + 1] = e;
        }
    }

    wypisztab(a);
    printf("\n");
    wypisztab(*b);
}
1

Brakuje ci jednej pętli do sortowania bąbelkowego. Twój program sortował tylko część tablicy.
Polecam rozpisywanie sobie na kartce/tablicy krok po kroku - debugowanie w ten sposób uczy :)

for(k=0; k<N-1; ++k)
{
	for(int i = k+1; i < N;++i)
	{
		if(*b[k]>*b[i]) 
		{
		    double e;
		    e=*b[k];
		    *b[k]=*b[i];
		    *b[i]=e;
		}
	}
}
 

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