Witam.
W związku z tym, że od pewnego czasu uczę się języka C (ANSI), z pewnością mój kod nie jest tak efektywny, jaki mógłby być.
Celem tego tematu jest możliwość zaprezentowania moich wypocin oraz prośba użytkowników forum o sugestię dotyczącego jego działania. Głównie interesują mnie komentarze, w których użycie pewnych instrukcji, bądź sztuczek spowoduje szybsze działanie mojego kodu.
Oto dwa algorytmy Sortowania przez wybieranie:
#include <stdio.h>
int main(void)
{
int tablica[] = {9, 1, 6, 8, 4, 3, 2, 0};
int rozmiar = sizeof(tablica) / sizeof(*tablica);
int x, y, min, temp;
for (x = 0; x < rozmiar - 1; ++x)
{
min = x;
for (y = x + 1; y < rozmiar; ++y)
{
if (tablica[y] < tablica[min])
min = y;
}
if (x < min)
{
temp = tablica[x];
tablica[x] = tablica[min];
tablica[min] = temp;
}
}
for (x = 0; x < rozmiar; ++x)
printf("%d ", tablica[x]);
return 0;
}
Oraz:
#include <stdio.h>
int main(void)
{
int tablica[] = {9, 1, 6, 8, 4, 3, 2, 0};
int rozmiar = sizeof(tablica) / sizeof(*tablica);
int x, y, ster;
for (x = 1; x < rozmiar; ++x)
{
ster = tablica[x];
for (y = x; y > 0 && tablica[y - 1] > ster; --y)
{
tablica[y] = tablica[y - 1];
tablica[y - 1] = ster;
}
}
for (x = 0; x < rozmiar; ++x)
printf("%d ", tablica[x]);
return 0;
}
Moje pytanie w tym miejscu brzmi, czy stosowanie warunków złożonych w pętli:
for (y = x; y > 0 && tablica[y - 1] > ster; --y)
... po za zmniejszoną ilością linii kodu (eliminuję całą instrukcję if wraz z jej blokiem), wprowadzają poprawę w jakości działania kodu (np. przy dużej ilości danych)?
Z góry dziękuję za udział w temacie.