sort (Polski)

szczegóły

sort jest ogólną funkcją, dla której można pisać metody, a sort.int jest wewnętrzną metodą, która jest zgodna z S, jeśli używane są tylko trzy pierwsze argumenty.

domyślna sort metoda korzysta z order dla klasowanych obiektów, które z kolei korzystają z ogólnej funkcji xtfrm (I może być wolna, chyba że xtfrm metoda zdefiniowano lub is.numeric(x) jest prawdziwe).,

wartości złożone są sortowane najpierw według części rzeczywistej, a następnie części urojonej.

z wyjątkiem metody"radix", kolejność sortowania wektorów znaków zależy od sekwencji zestawiania używanych ustawień regionalnych: patrzComparison. Kolejność sortowania czynników jest kolejnością ich poziomów (która jest szczególnie odpowiednia dla czynników uporządkowanych).

Jeślipartial nie jestNULL, przyjmuje się, że zawiera indeksy elementów wyniku, które mają być umieszczone w ich prawidłowych pozycjach w sortowanej tablicy przez sortowanie częściowe., Dla każdej wartości wyniku w określonej pozycji, każda wartość mniejsza od tej jest gwarantowana, aby mieć mniejszy indeks w posortowanej tablicy, a wszelkie wartości, które są większe, są gwarantowane, aby mieć większy indeks w posortowanej tablicy. (Dotyczy to wydajności, a wiele opcji nie jest dostępnych dla sortowania częściowego. Jest to znacznie bardziej efektywne, jeśli partial ma kilka elementów, a pełne sortowanie jest wykonywane (szybkie sortowanie, jeśli to możliwe), jeśli jest więcej niż 10.) Nazwy są odrzucane do częściowego sortowania.,

metoda "quick" używa implementacji Singletona (1969) metody Quicksort Hoare i jest dostępna tylko wtedy, gdy x jest numeryczna (Podwójna lub całkowita) i partial jest NULL. (Dla innych typówx Shellsort jest używany, po cichu.) Jest zwykle nieco szybszy niż Shellsort (być może 50% szybszy na wektorach o długości miliona i dwa razy szybszy na miliard), ale ma słabą wydajność w rzadkim najgorszym przypadku., (Modyfikacja Peto za pomocą pseudolosowego punktu środkowego jest używana, aby uczynić najgorszy przypadek rzadszym.) Nie jest to stabilny Rodzaj, a krawaty mogą być zmieniane.

metoda "radix" polega na prostym hashowaniu, aby skalować czas liniowo z rozmiarem wejściowym, tzn. jego asymptotyczna złożoność czasowa wynosi O (n). Konkretny wariant i jego implementacja pochodziły z danych.pakiet tabeli i są ze względu na Matt Dowle i Arun Srinivasan., Dla małych wejść (< 200) implementacja używa sortowania wstawiania (O(n^2)), które działa na miejscu, aby uniknąć nadmiarowego przydziału sortowania radix. Dla wektorów całkowitych o zasięgu mniejszym niż 100 000 przełącza się na prostsze i szybsze liniowe sortowanie czasu. We wszystkich przypadkach rodzaj jest stabilny; kolejność powiązań jest zachowana. Jest to metoda domyślna dla wektorów i czynników całkowitych.

metoda"radix" generalnie przewyższa inne metody, szczególnie dla wektorów znaków i małych liczb całkowitych., W porównaniu do szybkiego sortowania, jest nieco szybsze dla wektorów o dużych wartościach całkowitych lub rzeczywistych (ale w przeciwieństwie do szybkiego sortowania, radix jest stabilny i obsługuje wszystkie opcje ). Implementacja jest o rząd wielkości szybsza niż sortowanie powłoki dla wektorów znaków, częściowo dzięki sprytnemu wykorzystaniu wewnętrznej tabeli CHARSXP.

istnieją jednak pewne zastrzeżenia dotyczące sortowania radix:

  • Jeślix jest wektoremcharacter, wszystkie elementy muszą mieć to samo kodowanie., Obsługiwane są tylko kodowania UTF-8 (w tym ASCII) i Latin-1. Zestawienie zawsze następuje po ustawieniach regionalnych „C”.

  • Długie wektory (z więcej niż 2^32 elementami) icomplex wektory nie są jeszcze obsługiwane.

Leave a Comment