Sortowanie przez wybieranie

0

Muszę stworzyć funkcję w języku C, która szuka wartości najmniejszej tablicy i przekłada ją na jej początek (zamienia miejscami z tą w pierwszym indeksie), potem startuje od drugiego indeksu tablicy i znów robi to samo (tym razem przekłada do drugiego indeksu), w ten sposób sortując tablicę.

Co powinienem poprawić w tym kodzie?

#include <stdio.h>
void SelectionSort(int T[], int n)
{
    int i, tmp;
    int min = T[0];

    for (i = 0; i < n - 1; i++) {

        for (i = 0; i < n - 1; i++)
            if (T[i] <= min)
                min = T[i];
    }
    tmp = T[i];
    T[i] = min;
    min = tmp;
}

int main
{
    int tab[7] = { 20, 12, 7, 10, 25, 32, 5 };
    int i, n = 7;

    printf("Tablica przed posortowaniem:");
    for (i = 0; i < n; i++)
        printf("%d\t", tab[i]);

    SelectionSort(tab[], n);

    printf("Tablica po posortowaniu:");
    for (i = 0; i < n; i++)
        printf("%d\t", tab[i]);

    return 0;
}
0

W drugiej pętli nie musisz przechodzić przez wszystkie elementy, a za każdym razem o jeden element mniej, który będzie już posortowany (inaczej cały czas będziesz wybierał ten najmniejszy z całej tabeli, a nie o to chodzi)

W obu pętlach iterujesz po i.

0

Nie wiem dlaczego kompilator wywala mi tak dużo błędów w mainie np:
expected '{' before 'int'
expected ';' before 'int'
'i' does not name a type
expected constructor, destructor, or type convertionbefore ')'.

1

Nie zrobiłeś funkcji main: funkcje mają nawiasy przy nazwie, np. int main(). Potem Ci pozostanie do naprawy jeszcze linijka SelectionSort(tab[], n); — poza deklaracją/definicją funkcji, zapis tablica[] jest nonsensowny.

0

OK, dzięki.

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