Sortowanie bąbelkowe - poprawnosc kodu

0

Witam, mam pytanie.

Program działa, ale mam wrażenie, że coś 'zepsułem', czy ktoś mógłby rzucić okiem, czy wszystko jest OK?

Bylbym ogromnie wdzięczny.
Proszę, oto kod:

 #include <stdio.h>
#include <stdlib.h>
main()
{
	int t[5], k, temp;
	printf("Sortowanie babelkowe.\n");
	k = 100;
	for (int i = 0; i < 5; i++)
	{
		t[i] = k;
		k = k -(i * 5);
	}
	printf("\aPrzed sortowaniem : \n");
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", t[i]);
	}
	for (int i = 0; i < 5; i++)
	{
		for (int j = 1; j < 4; j++)
	{
			if (t[j]>t[j + 1])
			{
				temp = t[j + 1];
				t[j + 1] = t[j];
				t[j] = temp;
			}
		}
	}
	printf("\aPo sortowaniu : \n");
	for (int i = 0; i < 5; i++)
	{
		printf("%d ", t[i]);
	}
	system("pause");
}
2

Jest bardzo nie tak. Po pierwsze kod jest totalnie nieczytelny, Nazwy zmiennych powinny mówić co w nich jest!
Po drugie zewnętrzny for jest nadmiarowy, bo może wystarczyć mniej niż 5 razy. Należy za w każdym obiegu pętli sprawdzać czy coś się zmieniło i jeśli nastąpił obieg pętli bez zmian, wyjść.
Po trzecie w wewnętrznym forze powinno być od 0 do 4 włącznie. Pomijasz 1 element i on zawsze pozostanie pierwszy! KRYTYCZNE!
Po czwarte kod jest totalnie do szuflady. Byś chociaż jakąś przydatną funkcję wydzielił.
Po piąte naucz się testować, bo program nie działa. Ja dostaję taki wynik (zgodnie z tym co po trzecie):

Sortowanie babelkowe.
Przed sortowaniem :
100 100 95 85 70 Po sortowaniu :
100 70 85 95 100

0

Dzięki za szybką odpowiedź - fakt, wrzuciłem niezmieniony z tą jedynką - po tym jak zmienilem blad u siebie, zapomnialem na nowo skopiowac. Mea Culpa. Kod pisalem, tylko po to, azeby zrozumiec sortowanie babelkowe. Pomyślę teraz nad tym, jak zakonczyc, gdy sie nic nie zmieni.

Jeszcze raz dzieki za odpowiedz.

Serdecznie Pozdrawiam

4

Dodatkowo, masz w kodzie UB. Funkcja main (i dowolna inna) musi być zadeklarowana jako zwracająca jakiś typ¹.

¹ C89 ma co prawda implicit int, ale tam znowu wymaga jawnego użycia return x nawet w funkcji main.

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