błąd w kodzie algorytmu sortowanie przez wstawianie [C]

0

Witam!
Jest to mój pierwszy wpis na forum więc jeżeli popełniłem jakieś fopa proszę mnie pouczyć. Generalnie problem polega na tym że program przypisuje największą wartość do wszystkich elementów tablicy zamiast sortować.

int max_ind(float t[],int n)
{
	int i=0;
	int m=0, s=0;

	for (i=0;i<n;i++)
	{
		if(t[i]>m)
		{
			s=i;
			m=t[i];
		}
			
	}
	return s;
}

void sort_wst(float t[],int n)
{
	int i;
	for (i=n;i<0;i--)
	{
		if (t[max_ind(t,i)]>=t[i])
		{
			float a; 
			a=t[max_ind(t,i)];
			t[max_ind(t,i)]=a;
			t[i]=a;
			
		}
	}

}
0

Dziwnie to robisz...

void insertSort(float* tab, size_t size) {
    int i, j;
    float tmp_key;
    for(i = 1; i < size; ++i) {
        tmp_key = tab[i];
        for(j = i - 1; j >= 0 && tab[j] > tmp_key; --j) {
            tab[j + 1] = tab[j];
        }
        tab[j + 1] = tmp_key;
    }
}

http://ideone.com/CBMfuW

0

ok funkcja działa tylko celowo napisałem funkcje max_ind bo chciałem z niej skorzystać. Nie rozumiem

for(i = 1; i < size; ++i) {
        tmp_key = tab[i];
        for(j = i - 1; j >= 0 && tab[j] > tmp_key; --j)

dlaczego zwiększasz ++i a nie i++ i --j a nie j--,dlaczego przypisujesz do tmp_key wartość tab[i] i dopiero później wykonujesz kolejnego fora i dlaczego warunek

 tab[j]>tmp_key 

musi być również spełniony do skończenia pętli.

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