detaljer
sort
är en generisk funktion för vilken metoder kan skrivas, ochsort.int
är den interna metoden som är kompatibel med S om endast de tre första argumenten används.
standardsort
metod använder sig avorder
för klassade objekt, som i sin tur använder den generiska funktionenxtfrm
(och kan vara långsam om inte enxtfrm
– metod har definierats elleris.numeric(x)
är sant).,
komplexa värden sorteras först av den verkliga delen, sedan den imaginära delen.
förutom metod"radix"
beror sorteringsordningen för teckenvektorer på sorteringssekvensen för den plats som används: seComparison
. Sorteringsordningen för faktorer är ordningen på deras nivåer (vilket är särskilt lämpligt för beställda faktorer).
om partial
inte är NULL
, tas det att innehålla index av element i resultatet som ska placeras i sina korrekta positioner i den sorterade matrisen genom partiell sortering., För var och en av resultatvärdena i en viss position garanteras alla värden som är mindre än den som har ett mindre index i den sorterade matrisen och alla värden som är större garanteras ha ett större index i den sorterade matrisen. (Detta ingår för effektivitet, och många av alternativen är inte tillgängliga för partiell sortering. Det är bara Betydligt effektivare om partial
har en handfull element och en fullständig sortering görs (en Quicksort om möjligt) om det finns mer än 10.) Namn kasseras för partiell sortering.,
metod"quick"
använder Singleton (1969)’s implementering av Hoare Quicksort metod och är endast tillgänglig närx
är numerisk (dubbel eller heltal) ochpartial
ärNULL
. (För andra typer av x
Shellsort används tyst.) Det är normalt något snabbare än Shellsort (kanske 50% snabbare på vektorer av Längd en miljon och dubbelt så snabbt på en miljard) men har dålig prestanda i det sällsynta värsta fallet., (Petos modifiering med hjälp av en pseudo-slumpmässig mittpunkt används för att göra det värsta fallet sällsynt.) Detta är inte en stabil sort, och band kan ordnas om.
metod"radix"
bygger på enkel hashing för att skala tiden linjärt med inmatningsstorleken, dvs dess asymptotiska tidskomplexitet är O(n). Den specifika varianten och dess genomförande härstammar från uppgifterna.tabell paket och beror på Matt Dowle och Arun Srinivasan., För små ingångar (< 200) använder implementeringen en infogningsort (O(n^2)) som fungerar på plats för att undvika allokeringen av radix-sorteringen. För heltal vektorer av intervallet mindre än 100.000, växlar den till en enklare och snabbare linjär tidsräkning sort. I alla fall är sorten stabil; ordningen av band bevaras. Det är standardmetoden för heltal vektorer och faktorer.
metoden"radix"
överträffar i allmänhet de andra metoderna, särskilt för teckenvektorer och små heltal., Jämfört med quick sort är det något snabbare för vektorer med stora heltal eller verkliga värden (men till skillnad från quick sort är radix stabil och stöder alla alternativ). Implementeringen är storleksordning snabbare än skal sortera för teckenvektorer, delvis tack vare smart användning av den internaCHARSXP
tabell.
det finns dock vissa förbehåll med radix-sorteringen:
-
om
x
är encharacter
vektor måste alla element dela samma kodning., Endast UTF-8 (inklusive ASCII) och Latin-1 kodningar stöds. Sortering följer alltid” C ” – platsen. -
långa vektorer (med mer än 2^32 element) och
complex
vektorer stöds inte ännu.