OK
Dla przypomnienia i dla "potomnych" na czym polegał błąd w twoim kodzie:
Miałeś w funkcji sortowania takie pętle [piszę z pamięci]:
int i, j;
for (i = 0; i < N; ++i); //<== ten średnik to w tym kodzie błąd
{
for (j = 0; j < N-1-i; ++j)
{
I tu od razu niekonsekwencja, o której wcześniej pisałem.
W innych pętlach, używałeś inicjalizacji wewnątrz pętli:
for (int i = 0 ...
Gdybyś zrobił tak, także tutaj, kompilator [przy próbie kompilacji] wypisał by Ci od razu błąd i natychmiast mógłbyś go poprawić.
Nie jestem zwolennikiem nadmiaru nawiasów i wszędzie, gdzie są zbędne usuwam je, zarówno {} jak i ()
Programowanie Obiektowe - tu dopiero raczkujesz, ale ja też 
a) zamiast w main() : wsk[j].o=wsk[j].odleglosc(wsk[j].x,wsk[j].y);
mógłbyś napisać tam [w mainie]: wsk[i].odleglosc(); ale musiałbyś zmienić swoją funkcję w klasie na:
void odleglosc() {
o = x*x + y*y; // stosowanie tu funkcji pow() jest niepotrzzebne więc include cmath także jest zbędne
}
- Także pozostałe funkcje, a także tablicę wsk, możnaby i warto włożyć do klasy - ale to kiedyś, sam się nauczysz.
PS
W twoim kodzie miałeś średnik na końcu drugiej pętli, ale to nie zmienia faktu, że był/jest to błąd.
Ja zawsze staram się pisać pętle tak:
for (......) { //tu od razu nawias otwierający gdy potrzebuję nawiasów.
.....
.....
}
PS 2
Po takich poprawkach, po kompilacji, prawdopodobnie nic się nie zmieni w szybkości działania czy tym bardziej w samym działaniu, ale czytelność napewno będzie lepsza.