Sortowanie Listy Punktów polega na takim posortowaniu listy punktów {(x1, y1), (x2, y2), .., (xn, yn)} tak, aby punkty zostały posortowane według współrzędnej x. W przypadku, gdy współrzędne x punktów są równe to należy posortować je według współrzędnej y.
Do rozwiązania powyższego problemu można użyć dowolnej, dotychczas poznanej metody sortowania. Różnica tkwi przede wszystkim w momencie porównania elementów. W tym przypadku do rozwiązania zadania zostanie oparte na algorytmie Sortowania Przez Wybór. Jako punkt przyjmuje parę liczb całkowitych (x, y), które zostają wprowadzone przez użytkownika jako dwie liczby całkowite rozdzielone znakiem przerwy.
Na potrzeby przechowywania punktu zostanie zadeklarowana struktura punkt, która będzie przechowywać dwie zmienne typu int: x i y.
Do wczytywania danych z konsoli o punkcie służy funkcja wczytajPunkt():
Dodatkowo do wypisywania punktu wystarczy wywołać funkcję wypiszPunkt():
Główna funkcja sortująca będzie wyglądała następująco:
Generalnie schemat sortowania jest taki sam jak w Sortowaniu Przez Wybór. Należy jednak pamiętać, że (1.) wczytywana jest inna tablica danych. Ponadto na innej zasadzie polega porównywanie. (6.) Jeśli współrzędna wybranego punktu jest mniejsza od aktualnie wybranego to (7.) należy przestawić wybór. Jednak to samo należy zrobić jeśli (7.) współrzędne x są równe, a współrzędna y wybranego kolejnego punktu jest mniejsza.
Poniższa funkcja main() po skompilowaniu i uruchomieniu wczyta od użytkownika długość listy n, a następnie wczyta n punktów. Następnie na ekran wypisze posortowaną listę punktów.
Przykładowo dla danych:
Program wypisuje na ekran:
Napisz program, który wczyta n punktów z przestrzeni 3D tj. (x, y, z), a następnie posortuje według współrzędnej x, potem y i na końcu z. Punkty będą wprowadzone w kolejnych linijkach jako trzy liczby całkowite. Po posortowaniu program powinien wypisać punkty na ekran.
Przykładowo dla danych:
Program wypisuje na ekran: