Witam!
Czy istnieje możliwość zoptymalizowania podanego poniżej sortowania bąbelkowego? Fajnie jakby można było tych kilka funkcji umieścić w jednej, bardziej przejrzystej która zwracała by odpowiednią wartość w zależności od podanych argumentów.
void sortowanie(uczen *s,int n,char zn) // sortowanie wedlug sredniej
{
uczen tmp;
if(zn=='r')
for(int i=0;i<n;++i)
{
for(int j=0;j<n-1;++j)
{
if(s[j].srednia < s[j+1].srednia)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
if (zn=='m')
for(int i=0;i<n;++i)
{
for(int j=0;j<n-1;++j)
{
if(s[j].srednia > s[j+1].srednia)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
}
void sortowanie2(uczen *s,int n,char zn) // sortowanie wg nazwiska i imienia
{
uczen tmp;
if(zn=='r')
for(int i=0;i<n;++i)
{
for(int j=0;j<n-1;++j)
{
if(s[j].nazwisko < s[j+1].nazwisko) /
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
if(s[j].nazwisko == s[j+1].nazwisko)
{
if(s[j].imie > s[j+1].imie)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
}
if(zn=='m')
for(int i=0;i<n;++i)
{
for(int j=0;j<n-1;++j)
{
if(s[j].nazwisko > s[j+1].nazwisko)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
if(s[j].nazwisko == s[j+1].nazwisko)
{
if(s[j].imie < s[j+1].imie)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
}
}
void sortowanie3(uczen *s,int n,char zn) // sortowanie wedlug klasy
{
uczen tmp;
if(zn=='r')
for(int i=0;i<n;++i)
{
for(int j=0;j<n-1;++j)
{
if(s[j].klasa < s[j+1].klasa) /
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
if(zn=='m')
for(int i=0;i<n;++i)
{
for(int j=0;j<n-1;++j)
{
if(s[j].klasa > s[j+1].klasa)
{
tmp = s[j+1];
s[j+1] = s[j];
s[j] = tmp;
}
}
}
}