Randomowe liczby w algorytmie sortowania typu insert

0

Napisałem program sortujący typu insert. Najdziwniejsze jest to, że raz działa bardzo dobrze(tj. sortuje od najmniejszej do największej te liczby które podałem), a raz wywala totalnie randomowe liczby, których nie wpisywałem (jak gdyby w tablicy nic nie było zainicjalizowane, lub było to przechowywane na stosie – o ile dobrze rozumiem). Nie wiem czy to wina kodu czy raczej kompilatora (Dev C++). Zwykle pracuje na visual express, ale teraz nie mam do niego dostępu (laptop bez internetu, a trzeba ściągnąć klienta..).
W [istotne][/istotne] zaznaczyłem fragment, który wkłada daną liczbę od razu w dobrym miejscu (czyli między mniejszą a większą od siebie).
Mówiąc jeszcze raz: odpalam TEN SAM KOD, za 1,2,3 razem i jest ślicznie, odpalam kolejny raz TEN SAM KOD i mi wywala liczby randomowe (jak np. 512318322). Wtf?
Tak przy okazji, od czego zacząc zanim się usiądzie do pisania algorytmu? Bo pisanie całego na rambostyle to bardzo zły pomysł (przynajmniej dla takiego nooba jak ja) – parę razy się zniechęcałem.
Algorytm napisany w 100% przeze mnie, ale już wcześniej podpatrzyłem ten sposób kodzenia u kogoś innego (tylko chodziło o algorytm bąbelkowy).



	for(int r=0; r<4 ; r++)
	{
	
		tp[r] = tn[r];				// kazdorazowe przypisanie wartosci z tablicy nieposortowanej do posortowanej

		if(r==0)
		{
			continue;
		}

		u = r;				//zeby nie zmieniac r potem
	
		do 
		{
	
			warspl = 0;
		
			if(tp[u] < tp[u-1])			// jezeli element u jest mniejszy od poprzedniego (u-1) to zamien
			{


				warspl = 1;


				schowek = tp[u-1];
				tp[u-1] = tp[u];
				tp[u] = schowek;
	
				u = u-1;				//to samo co u--	
			}
		}
		while(warspl == 1);

	}
//[/istotne]


0

goto odnowa;

user image

Poza tym jest to chyba najbardziej nieczytelny insertion sort jakiego widziałem od dawna. Porównaj implementacje tutaj:
Insertion Sort
z tą twoją abominacją.

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