Detalhes
sort
é uma função genérica para os quais métodos podem ser escritas, e sort.int
é o método interno que é compatível com S se apenas os três primeiros argumentos são utilizados.
O padrão sort
método faz uso de order
classificados para objetos, que por sua vez faz uso da função genérica xtfrm
(e pode ser lenta, a menos que uma xtfrm
método tem sido definido ou is.numeric(x)
é verdade).,
os valores complexos são ordenados primeiro pela parte real, depois pela parte imaginária.
excepto para o método"radix"
, a ordem de ordenação dos vectores de caracteres irá depender da sequência de colagem do local em uso: verComparison
. A ordem de ordenação dos fatores é a ordem de seus níveis (o que é particularmente apropriado para os fatores ordenados).
Se partial
não é NULL
, ele é levado para conter os índices dos elementos do resultado devem ser colocados em suas posições corretas na matriz ordenada por classificação parcial., Para cada um dos valores do resultado em uma posição especificada, quaisquer valores menores do que aquele são garantidos para ter um índice menor na matriz ordenada e quaisquer valores que são maiores são garantidos para ter um índice maior na matriz ordenada. (Isto está incluído para a eficiência, e muitas das opções não estão disponíveis para a triagem parcial. É só substancialmente mais eficiente se partial
tem um punhado de elementos, e uma completa classificação é feita (um Quicksort, se possível), se houver mais de 10.) Os nomes são descartados para classificação parcial.,
Método "quick"
usa Singleton (1969)’s a implementação de Hoare Quicksort método e só está disponível quando x
é numérico (duplo ou inteiro) e partial
é NULL
. (For other types of x
Shellsort is used, silently.) É normalmente um pouco mais rápido do que o Shellsort (talvez 50% mais rápido em vetores de comprimento de um milhão e duas vezes mais rápido em um bilhão), mas tem fraco desempenho no pior caso raro., (A modificação de Peto usando um ponto médio pseudo-aleatório é usado para tornar o pior caso mais raro.) Este não é um tipo estável, e laços podem ser reordenados.
método "radix"
baseia-se numa simples amarração à escala de tempo linearmente com o tamanho da entrada, ou seja, a sua complexidade assintótica de tempo é O(n). A variante específica e a sua implementação tiveram origem nos dados.e são devidos a Matt Dowle e Arun Srinivasan., Para pequenas entradas (< 200), a implementação usa um sort de inserção(O (n^2)) que opera no local para evitar a sobrecarga de alocação do sort radix. Para vetores inteiros de alcance inferior a 100.000, ele muda para uma ordenação linear de contagem de tempo mais simples e mais rápido. Em todos os casos, o tipo é estável; a ordem dos laços é preservada. É o método padrão para vetores inteiros e fatores.
The "radix"
method generally outperforms the other methods, especially for character vectors and small integers., Comparado ao Quick sort, é um pouco mais rápido para Vetores com grandes valores inteiros ou reais (mas ao contrário do quick sort, o radix é estável e suporta todas as opções na.last
). A implementação é de ordens de magnitude mais rápida do que shell sort para vetores de caracteres, em parte graças ao uso inteligente do interno CHARSXP
table.
no Entanto, há algumas ressalvas com o radix sort:
-
Se
x
é umcharacter
vector, todos os elementos devem compartilhar a mesma codificação., Somente UTF-8 (incluindo ASCII) e encodings Latin-1 são suportados. A colação segue sempre o local “C”. -
vetores longos (com mais de 2^32 elementos) e
complex
os vetores ainda não são suportados.