[C] Sortowanie bąbelkowe - proszę o poprawienie algorytmu


(Bmsiak) #1

Witam. Napisałem samodzielnie program, który posortuje tablicę 10 - elementową, wylosowanych przez komputer z zakresu 0-9. Niestety nie działa tak jak powinien, a ja nie widzę w kodzie błędu. Bardzo bym prosił o ewentualne korekty w kodzie aby program kompilował się poprawnie.

#include 

#include 

#include 



int main(void) 

{	

	int tab[9];

	int i;

	int k = 8;

	int l;

	for(i=0; i<9;++i)	{

		srand(time(NULL));

		tab[i] = rand() % 10;

	}

	for(l=0; l
		for(i=0; i<8; ++i) {

			int t;

			int j = (i+1);

			if(tab[i] > tab[j]) {

				t = tab[j];

				tab[j] = tab[i];

				tab[i] = t;

			}

			if(i == 7)

				--k;

		}

	}

	printf("%i",tab);

	return 0;

}

(Kopczynski1991) #2

A wpisałeś w kodzie:

int tab[9];

a to jest tablica 9-elemetnowa; więc jeśli już chcesz sortować w 10-elementowej to:

int tab[10];

(Copycona) #3
   for(i=0; i<9;++i)   {      srand(time(NULL));      tab[i] = rand() % 10;   } [/code] Tu srand() wyrzuć poza pętlę (wykonaj to raz).




[code=php]  printf("%i",tab);

 W ten sposób nie wypiszesz wszystkich elementów tablicy. Nazwa tablicy jest adresem jej pierwszego elementu. Taka konstrukcja wypisze adres pierwszego elementu tablicy (jako liczbę dziesiętną). Wypisać musisz używając pętli, tak samo, jak generowałeś dla tablicy losowe wartości.



Poza tym sam algorytm też jest wadliwy. Nie posortuje zawsze poprawnie. Masz tak:



    int tab[9];   int k = 8;