Sortowanie tablicy wg odległości punktów od danego punktu

0

Cześć wszystkim!

Mam za zadanie posortować tablicę dwuwymiarową wg. odległości punktów tej tablicy od punktu 0,0.
Obojętnie czy malejąco czy rosnąco.

Mógłbym poprosić o wskazówki? Oczywiście takie rzeczy jak obliczanie odległości to mam zrobione.

0

Quicksort i odpowiednia funkcja porównująca.
http://www.cplusplus.com/reference/cstdlib/qsort/

Jako, że qsort jest niestabilny i wynik nie zawsze może być tym co spodziewamy się zobaczyć, pomóc może stable_sort z std::algorithm np na wektorze obiektów klasy punkt. Rzecz jasna z własna funkcją porównującą.
http://www.cplusplus.com/reference/algorithm/stable_sort/

0

No niestety nie mogę używać takich funkcji. Chodziło mi o bardziej prymitywne metody, bo nie wiem jak zapisać odpowiednio pętlę.

0

No zrób może sortowanie bąbelkowe obiektów klasy punkt. Jest tam przecież miejsce, w którym określa się warunek co jest większe, a co mniejsze etc. Jak masz to robić ręcznie to może tak.

1
  1. zdefiniuj klasę Punkt lub wykorzystaj std::pair<double,double>
  2. załaduj dane do std::vector<Punkt>
  3. napisz swoją funkcję porównującą wg "odległość od (0,0)" dwa punkty
  4. napisz sortowanie z podaniem funkcji porządkującej i z wykorzystaniem jakiegoś znanego algorytmu, osobiście polecam Shell Sort (najprościej zaimplementować a wydajność całkiem dobra)

Aby wykorzystać funkcję w funkcji najlepiej wykorzystać template, tu masz przykład:
http://www.cplusplus.com/reference/algorithm/count_if/

(funkcja count_if wywołuje funkcje którą podasz jako parametr)

1 użytkowników online, w tym zalogowanych: 0, gości: 1