C: Metode de sortare Analiza

voturi
7

Am o mulțime de diferite algoritmi de sortare, care toate au următoarea semnătură:

void <METHOD>_sort_ints(int * array, const unsigned int ARRAY_LENGTH);

Există apartamente de testare pentru sortarea pe care am putea folosi în scopul de a face comparații empirice?

Întrebat 27/08/2009 la 04:52
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
10

Această discuție detaliată , precum și conectarea la un număr mare de pagini Web vă sunt susceptibile de a găsi utile, descrie , de asemenea , un set util de date de intrare pentru testarea algoritmilor de sortare ( a se vedea pagina din motive legate). rezumând:

  1. matrice complet remaniat aleator
  2. matrice deja sortate
  3. Deja sortate în ordine inversă matrice
  4. Chainsaw matrice
  5. Matrice de elemente identice
  6. Deja sortat matrice cu permutări N (cu N la 0,1 la 10% din dimensiunea)
  7. matrice deja sortate în ordine inversă matrice cu permutări N
  8. Datele care au o distribuție normală cu chei duplicat (sau apropiate) (pentru sortare stabil numai)
  9. date pseudoaleatoare (valori zilnice ale S & P500 sau alt indice pentru un deceniu ar putea fi un test bun stabilit aici, ele sunt disponibile de la Yahoo.com)
Publicat 02/09/2009 la 11:10
sursa de către utilizator

voturi
7

Studiul definitiv de sortare este Bob Sedgewick teza de doctorat lui. Dar există o mulțime de informații bune în algoritmii manualele sale, iar acestea sunt primele două locuri pe care le - ar căuta pentru suita de testare și metodologia. Dacă ați avut un curs recent vei ști mai mult decât mine; Ultima dată când am avut un curs, cea mai bună metodă a fost de a utiliza sortarerapidă până la pereții despărțitori de dimensiune 12, apoi executați de inserție sortare pe întreaga matrice. Dar raspunsurile schimba la fel de repede ca și hardware - ul.

Programare carti Perls Jon Bentley au alte informații despre sortare.

Puteți bici rapid o suită de testare care conține

  • numere întregi aleatoare

  • numere întregi triate

  • Reverse numere întregi sortate

  • numere întregi sortate, ușor perturbate

În cazul în care memoria servește, acestea sunt cele mai importante cazuri pentru un algoritm de sortare.

Dacă sunteți în căutarea pentru a sorta matrice , care nu se va potrivi în cache - ul, veți avea nevoie pentru a măsura efectele cache. valgrindeste eficientă dacă este lent.

Publicat 27/08/2009 la 05:22
sursa de către utilizator

voturi
3

sortperf.py are o suită bine selectat de cazuri de testare de referință și a fost utilizat pentru a sprijini eseu găsit aici și să facă timsort genul în Python lo că mulți ani în urmă. Rețineți că, în sfârșit, Java poate fi trecerea la timsort prea, datorită Josh Block ( a se vedea aici ), așa îmi imaginez că au scris propria lor versiune a cazurilor de testare de referință - cu toate acestea, nu pot găsi cu ușurință o referință să - l. (timsort, un grajd, adaptivă, iterativ varianta mergesort naturale, este potrivit în special pentru limbi cu semantica de referință-to-obiect , cum ar fi Python și Java, în cazul în care „mișcarea de date“ este relativ ieftin [[din moment ce tot ce a fost vreodată mutat este referințe aka indicii , nu Blobs de dimensiune nemărginită ;-)]], dar comparațiile pot fi relativ costisitoare ` , deoarece nu există nici o limită superioară la complexitatea unei funcții comparație - dar acest lucru este valabil pentru orice limbă , în cazul în care sortarea poate fi personalizat printr - o comparație personalizată sau function` cheie-extracție).

Publicat 06/09/2009 la 02:15
sursa de către utilizator

voturi
3

Acest site prezintă diferite algoritmi de sortare folosind patru grupe: http://www.sorting-algorithms.com/

În plus față de patru grup în răspunsul lui Norman doriți să verificați algoritmii de sortare cu o colecție de numere care au câteva asemănări în numerele:

  • Toate numerele întregi sunt unice
  • Același număr întreg în întreaga colecție
  • Câteva chei unice

Modificarea numărului de elemente din colecție este, de asemenea, o bună practică de a verifica fiecare algoritm cu 1K, 1M, 1G etc pentru a vedea ce sunt implicațiile de memorie ale acestui algoritm.

Publicat 02/09/2009 la 10:51
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more