Sort

Z góry uprzedzam, że przedstawiony tutaj sposób nie przejdzie na Athinie, gdyż Pan Duraj z pewnością odbije takie zadanie ręcznie, użyjemy w nim bowiem sposoby "sprytnego" - żeby się za dużo nie naklepać.
Celem tego tematu jest pokazanie szybkiego sposoby na tego typu problemu osobom, które go jeszcze nie znają.

Wiele osób pewnie już zna funkcję sort(), ale są pewnie osoby, które jej nie znają, a prawie na pewno takie, które nie wiedzą jak użyć jej w zadaniu F.

Funkcja sort() sortuje tablicę za pomocą tzw. Intro Sorta, który jest połączeniem Quick Sorta i Heap Sorta, rozwlekanie się nad tym jak to działa jest według mnie bez sensu, no bo po co?? Jak ktoś chce, może to oczywiście sobie przeczytać, ale ja osobiście nie wiem jak to do końca działa ;)

W każdym razie, jak jej użyć??
sort(tab+x, tab+y);
gdzie "tab" to nazwa tablicy, "x" to numer komórki, od której należy zacząć sortowanie, a "y" to numer ostatniej komórki, którą sortujemy.

No dobra, ale jak chcemy w zadaniu F sortować szczyty, to funkcja musi jakoś się dowiedzieć jak je sortować. Jak to zrobić??
Robimy sobie funkcję:
bool porównaj (typ a, typ b)
{
//tutaj jakaś treść
}
Gdzie "typ" to nazwa typu danych, np int, albo nasza własna struktura. Funkcja porównaj(a, b) powinna oznaczać to samo co a<b, wtedy używamy funkcji sort() w ten sposób:
sort(tab+x, tab+y, porównaj);
I dane zostaną posortowane używając funkcji porównaj() zamiast znaku "<"

Jeśli nasza funkcja będzie wyglądać tak:
bool porównaj(int a, int b)
{
return a>b;
}
to wywołanie sort(tab+x, tab+y, porównaj) posortuje liczby od największej do najmniejszej

[Lech Duraj] Wyjaśniam: w zadaniach dotychczasowych (z wyjątkiem E) nie wolno było stosować sorta. Jeśli będzie taka potrzeba w dalszych zadaniach, prawdopodobnie będzie dozwolony.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License