C: analiza z sortowaniem Metody

głosy
7

Mam dużo różnych algorytmów sortowania które mają następujący podpis:

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

Czy są jakieś apartamenty testowania do sortowania, które można używać do celów dokonywania porównań empirycznych?

Utwórz 27/08/2009 o 04:52
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
7

Ostateczne badanie sortowania jest Bob Sedgewick praca doktorska „s. Ale istnieje wiele dobrych informacji w swoich algorytmów podręczników, a są to dwa pierwsze miejsca, będę szukać zestawu testów i metodologii. Jeśli miałeś niedawno kursu będziesz wiedział więcej niż ja; Ostatni raz miałem Oczywiście, najlepszym sposobem było wykorzystanie quicksort do partycji o rozmiarze 12, a następnie uruchomić Sortowanie przez wstawianie na całej tablicy. Ale odpowiedzi tak szybko, jak zmienić sprzęt.

Programowanie Perls książki Jon Bentley jakieś inne informacje na temat sortowania.

Można szybko wzbudzać zestaw testowy zawierający

  • losowych liczb całkowitych

  • posortowanych całkowitymi

  • Całkowite odwrócenie posortowane

  • Posortowanych całkowitymi, lekko wzburzony

Jeśli mnie pamięć nie myli, to są najważniejsze sprawy dla algorytmu sortowania.

Jeśli szukasz do sortowania tablic, które nie zmieszczą się w pamięci podręcznej, musisz mierzyć efekty cache. valgrindjest skuteczne, jeśli wolno.

Odpowiedział 27/08/2009 o 05:22
źródło użytkownik

głosy
3

Ta strona przedstawia różne algorytmy sortowania za pomocą czterech grup: http://www.sorting-algorithms.com/

W uzupełnieniu do czterech grup w odpowiedzi Norman chcesz sprawdzić algorytmów sortowania ze zbioru liczb, które mają kilka podobieństwa w liczbach:

  • Wszystkie liczby całkowite są wyjątkowe
  • W tym samym całkowitą w całej kolekcji
  • Kilka unikatowych kluczy

Zmiana liczby elementów w kolekcji jest również dobra praktyka sprawdzić każdy algorytm 1K, 1M, 1G itp zobaczyć jakie są implikacje pamięci tego algorytmu.

Odpowiedział 02/09/2009 o 10:51
źródło użytkownik

głosy
10

Ta szczegółowa dyskusja , jak również łączenie dużej liczby powiązanych stron internetowych mogą znaleźć przydatne, opisuje również użyteczny zestaw danych wejściowych do testowania algorytmów sortowania (patrz str połączoną ze względów). Zreasumowanie:

  1. Całkowicie losowo przetasowanie array
  2. Już posortowana tablica
  3. Już sortowane w kolejności odwrotnej macierzy
  4. Chainsaw array
  5. Tablica z identycznych elementów
  6. Już posortowana tablicę permutacji N o N (od 0,1 do 10% wielkości)
  7. Już posortowanej tablicy w tablicy odwrotnej kolejności z N permutacji
  8. Dane, które mają rozkład normalny z duplikatami (lub bliskich) kluczy (dla stabilnego sortowania tylko)
  9. Dane pseudolosowych (dzienne wartości S & P500 lub innego wskaźnika na dekadę może być ustawiony dobry test tutaj; są one dostępne z Yahoo.com)
Odpowiedział 02/09/2009 o 11:10
źródło użytkownik

głosy
3

sortperf.py ma dobrze wybrany pakiet porównawczych testów i został wykorzystany do wspierania esej znaleźć tutaj i sprawiają timsort sortowania w Pythonie lo, że wiele lat temu. Należy zauważyć, że w końcu, Java może się poruszać do timsort też, dzięki Josh bloku (zobacz tutaj ), więc sobie wyobrazić, że napisałem własną wersję porównawczych przypadków testowych - jednak nie mogą łatwo znaleźć odniesienie do niego. (timsort, stabilny, adaptacyjne, iteracyjny wariant naturalny mergesort, szczególnie nadaje się do języków z reference-to-przedmiot semantyki jak Python i Java, gdzie „ruch danych” jest stosunkowo tani [[ponieważ wszystko, co jest zawsze przeniósł się odnośniki aka wskaźników nie plamki nieograniczonej wielkości ;-)]], ale porównania może być stosunkowo kosztowne `ponieważ nie istnieje górna granica na złożoność funkcji porównania - ale wtedy to zachodzi dla dowolnego języka, gdzie sortowania mogą być dostosowane poprzez porównanie niestandardowego lub zakresie funkcji key-ekstrakcja).

Odpowiedział 06/09/2009 o 02:15
źródło użytkownik

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