Sortowanie przez wstawianie - pisanie programu według algorytmu

0

Witam, mam problem z napisaniem działającego programu w C, który będzie sortował wprowadzony zbiór liczb przez wstawianie. Na zajęciach napisaliśmy taki algorytm i według niego mieliśmy napisać program:
001pgt.jpg

Wydaje mi się, ze program napisałem dobrze, kompiluje się bez problemów, ale wyświetla zawsze tylko drugą liczbę ze wprowadzonego zbioru.

#include <stdio.h>
#define N 100
int n,i,j,tmp;
int s[N];
 
int selectionSort(int* tab){

i=0;
j=i+1;

if ( n=0 )
	{
	printf("\n Zbiór pusty");
	}
	else
	{
		if ( n=1 )
		{
		printf("\n %d", s[n]);
		}
		else
		{
			while ( i < n )
			{
			j=i+1;
			
				while ( j < n )
				{
				
					if ( s[i] > s[j] )
					{
					tmp=s[i];
					s[i]=s[j];
					s[j]=tmp;
					}
					else
					{
					j=j+1;
					}
					i=i+1;
				}
			}
		}
	}
for ( i=0; i < n; i++ )
{
printf("\n %d", s[i]);
}
return 0;
}

int main()
{

printf("\n Podaj n < 100: ");
scanf("%d", &n);

for (i=0; i < n; i++)
{
 printf("\n Podaj kolejną liczbę: ");
 scanf("%d", &s[i]);
}

selectionSort(s);

return 0;
}

Będę wdzięczny za wszelką pomoc :)

0

Porównanie to operator == a nie =, dalej nie sprawdzałem ale pewnie takich kwiatków masz więcej.

0

Program się kompiluje bez problemu, ale nie wypisuje posortowanych liczb, chodzi o to, czy błąd jest w kodzie, czy może już w samym algorytmie (algorytm był pisany na zajęciach przez prowadzącego) ?
//edit: poczytałem o tym operatorze, ale co dziwne nawet na zajęciach zawsze używaliśmy pojedynczego znaku "=" przy instrukcjach warunkowych, nigdy nie było z tym problemów, zaraz zmienię i zobaczę, czy zmieni się działanie programu :)
//edit2: teraz program w ogóle nie kończy swojego działania ;/

0

Patrzyłem na szybko i sam algorytm raczej nie jest dobrze przepisany. Zastanawia mnie pierwsza instrukcja w pierwszej pętli - nie widzę jej w diagramie w tym miejscu. Ponadto to co wspominał Shalom nie porównuje się wartości pojedynczym znakiem = . Jeśli poprawnie sformatujesz kod (wcięcia) może będzie Ci łatwiej znaleźć błąd

0

Pierwsza pętla ( i < n ) jest na diagramie jako ta druga, większa pętla - trzecia figura od końca :)

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