Witam. Jestem obecnie na rozdziale z tablicami w książce Alex Allain i mam kolejny problem a raczej taki zwyczajny mętlik w głowie i nie jestem w stanie zrozumieć zaprezentowanego tam przykładowego kodu który sortuje wartości w tablicach przez sortowanie i wstawianie. Niby wiadomo co należy zrobić ale nawet w momencie kiedy zacząłem sobie podstawiać te wartości które są podane w funkcji main do konkretnych funkcji w kodzie to i tak nie jestem w stanie tego pojąć. Czy pomoże mi ktoś wyjaśnić działanie poszczególnych elementów tego kodu w sposób prosty i zrozumiały, analizująca każdą funkcję po kolei ? Ja jestem nawet w stanie jeżeli znajdzie się taka osoba która ma czas żeby umówić się gdzieś zdalnie na sypie czy innym diskordzie umówić się na korepetycje gdyż zależy mi da dokładnym i dobrym zrozumieniu tematu.
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int znajdzNajmniejszyPozostalyElement (int tablica[], int rozmiar, int indeks);
void zamien (int tablica[], int pierwszy_indeks, int drugi_indeks);
void sortuj (int tablica[], int rozmiar)
{
for ( int i = 0; i < rozmiar; i++ )
{
int indeks = znajdzNajmniejszyPozostalyElement( tablica, rozmiar, i );
zamien( tablica, i, indeks );
}
}
int znajdzNajmniejszyPozostalyElement (int tablica[], int rozmiar, int indeks)
{
int indeks_najmniejszej_wartosci = indeks;
for (int i = indeks + 1; i < rozmiar; i++)
{
if ( tablica[ i ] < tablica[ indeks_najmniejszej_wartosci ] )
{
indeks_najmniejszej_wartosci = i;
}
}
return indeks_najmniejszej_wartosci;
}
void zamien (int tablica[], int pierwszy_indeks, int drugi_indeks)
{
int tymczas = tablica[ pierwszy_indeks ];
tablica[ pierwszy_indeks ] = tablica[ drugi_indeks ];
tablica[ drugi_indeks ] = tymczas;
}
// nieduza funkcja pomocnicza wyswietlajaca tablice przed i po sortowaniu
void wyswietlTablice (int tablica[], int rozmiar)
{
cout << "{";
for ( int i = 0; i < rozmiar; i++ )
{
// z wzorcem tym bedziesz miec czesto do czynienia - sluzy on
// do czytelnego formatowania list; kod sprawdza, czy jestesmy
// juz poza pierwszym elementem i jesli tak, dolacza przecinek
if ( i != 0 )
{
cout << ", ";
}
cout << tablica[ i ];
}
cout << "}";
}
int main ()
{
int tablica[ 10 ];
srand( time( NULL ) );
for ( int i = 0; i < 10; i++ )
{
// liczby beda latwiejsze do odczytania, gdy beda male
tablica[ i ] = rand() % 100;
}
cout << "Tablica wyjsciowa: ";
wyswietlTablice( tablica, 10 );
cout << '\n';
sortuj( tablica, 10 );
cout << "Tablica posortowana: ";
wyswietlTablice( tablica, 10 );
cout << '\n';
}