un fel

Detalii

sort este o funcție generic pentru care metode pot fi scrise, iar sort.int este metoda internă, care este compatibil cu S dacă doar primele trei argumente sunt folosite.

implicit sort metodă face uz de order pentru clasate obiecte, care la rândul său face uz de funcția generică xtfrm (și poate fi lent excepția cazului în care un xtfrm metoda a fost definită sau is.numeric(x) este adevărat).,valorile complexe sunt sortate mai întâi de partea reală, apoi de partea imaginară.

în Afară de metoda "radix", ordinea de sortare pentru caracterul vectori va depinde de coroborarea secvență de localizare în utilizare: a se vedea Comparison. Ordinea de sortare a factorilor este ordinea nivelurilor lor (ceea ce este deosebit de adecvat pentru factorii ordonați).

Dacă partial nu este NULL, ea este luată pentru a conține indicii de elemente de rezultatul care urmează să fie plasate în pozițiile lor corecte în sortat parțială de sortare., Pentru fiecare dintre valorile rezultate într-o poziție specificată, orice valori mai mici decât cea sunt garantate pentru a avea un indice mai mic în matrice sortate și orice valori care sunt mai mari sunt garantate pentru a avea un indice mai mare în matrice sortate. (Aceasta este inclusă pentru eficiență și multe dintre opțiuni nu sunt disponibile pentru sortarea parțială. Este substanțial mai eficient dacă partial are o mână de elemente și se face o sortare completă (o Quicksort dacă este posibil) dacă există mai mult de 10.) Numele sunt aruncate pentru sortare parțială.,

Metoda "quick" foloseste Singleton (1969) modelului de implementare de Hoare este metoda Quicksort și este disponibil numai atunci când x este numeric (dublu sau întreg) și partial este NULL. (Pentru alte tipuri de x Shellsort este folosit, în tăcere.) Este în mod normal ceva mai rapid decât Shellsort (poate cu 50% mai rapid pe vectori de lungime de un milion și de două ori mai rapid la un miliard), dar are performanțe slabe în cel mai rău caz rar., (Modificarea lui Peto folosind un punct intermediar pseudo-aleatoriu este folosită pentru a face cel mai rău caz mai rar.) Acesta nu este un fel stabil, iar legăturile pot fi reordonate.

metoda "radix" se bazează pe hashing simplu pentru a scala timpul liniar cu dimensiunea de intrare, adică, complexitatea timpului asimptotic este O(n). Varianta specifică și implementarea acesteia au provenit din date.pachet de masă și se datorează Matt Dowle și Arun Srinivasan., Pentru intrări mici (< 200), implementarea folosește un fel de inserție (O(n^2)) care operează în loc pentru a evita alocarea aeriană a sortului radix. Pentru vectori întregi cu un interval mai mic de 100.000, acesta trece la un mod mai simplu și mai rapid de numărare a timpului liniar. În toate cazurile, soiul este stabil, ordinea legăturilor este păstrată. Este metoda implicită pentru Vectori și factori întregi.

metoda "radix" depășește în general celelalte metode, în special pentru vectorii de caractere și numerele întregi mici., În comparație cu Quick sort, este puțin mai rapid pentru vectorii cu valori întregi mari sau reale (dar spre deosebire de quick sort, radix este stabil și acceptă toate opțiunile na.last). Implementarea este cu ordine de mărime mai rapidă decât sortarea shell pentru vectorii de caractere, în parte datorită utilizării inteligente a tabelului intern CHARSXP.

cu toate Acestea, există unele limitări cu radix sort:

  • Dacă x este un character vector, toate elementele trebuie să împărtășească aceeași codificare., Numai codificările UTF-8 (inclusiv ASCII) și Latin-1 sunt acceptate. Colaționare urmează întotdeauna” C ” locale.

  • vectorii lungi (cu mai mult de 2^32 elemente) și complex vectorii nu sunt încă acceptați.

Leave a Comment