Najłatwiej realizować w Internecie sortowane struktury danych w języku C

głosy
1

Ja skanowania dużego źródła danych, obecnie około 8 milionów wpisów, wydobywając na ciąg na wejściu, co chcę w porządku alfabetycznym.

Currenlty umieścić je w tablicy następnie rodzaj indeksu do nich za pomocą qsort()której działa dobrze.

Ale z ciekawości mam na myśli zamiast wstawiania każdy łańcuch w strukturę danych, która utrzymuje je w kolejności alfabetycznej, jak skanować je od źródła danych, częściowo na doświadczeniach emlplementing jedną, częściowo dlatego, że będzie czuć się szybciej bez oczekiwania na rodzaj, aby zakończyć po zakończeniu skanowania (-:

Jakie dane struktura byłaby najbardziej proste do wdrożenia w C?

AKTUALIZACJA

Aby wyjaśnić, tylko operacje trzeba wykonać wstawiasz element i dumping indeks kiedy to zrobić, przez co rozumiem dla każdego elementu w oryginalnej kolejności zrzucić liczbę całkowitą reprezentującą kolejność to jest w po sortowaniu.

PODSUMOWANIE

  • Najłatwiejszy do realizacji są binarne drzewo poszukiwań.
  • Własny równoważenia drzewo binarne są znacznie lepsze, ale wcale trywialne do wdrożenia.
  • Wstawiania można zrobić iteracyjny ale przechodzenie na zamówienie za dumping wyników i post-zlecenia przechodzenie na usunięcie drzewa po zakończeniu zarówno wymagać albo rekursji lub wyraźnego stos.
  • Bez realizacji równoważenie, przebiegi zamówionej wejścia spowoduje zdegenerowanej najgorszym przypadku, który jest powiązany lista. Oznacza to głębokie drzewa, które poważnie wpłynąć na szybkość działania wkładki.
  • Tasowanie wejście nieznacznie może zerwać nakazał wejście i jest znacznie łatwiejsze do wdrożenia, że ​​równoważenie.
Utwórz 11/04/2011 o 18:23
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
3

Drzewa binarne wyszukiwania. Lub na własny równoważenia drzewa wyszukiwania. Ale nie oczekuj tych będzie szybciej niż prawidłowo wdrożony dynamicznej tablicy, ponieważ tablice mają znacznie lepszą lokalizację odniesienia niż struktury wskaźnika. Również niesymetryczna BSTS może "go liniowym", a więc cała algorytm będzie O ( n ²), jak quicksort.

Odpowiedział 11/04/2011 o 18:24
źródło użytkownik

głosy
0

Można zaimplementować algorytm sortowania szybciej nam Timsort takich lub innych algorytmów sortowania z nlog (n) a najgorszym przypadku wystarczy wyszukać go za pomocą Binary wyszukiwanie Od jej szybciej, gdy lista jest sortowana.

Odpowiedział 11/04/2011 o 18:29
źródło użytkownik

głosy
0

należy przyjrzeć Trie datastructure WikiLink myślę, że to będzie służyć co chcesz

Odpowiedział 18/04/2011 o 08:20
źródło użytkownik

głosy
2

Używasz już optymalne podejście. Sortuj pod koniec będzie znacznie tańsze niż utrzymywanie online klasyfikowane strukturę danych. Można uzyskać taką samą O (logn) z RB-drzewa, ale stała będzie znacznie gorzej, nie wspominając już znaczną przestrzeń nad głową.

To powiedziawszy, AVL drzew i Rb-drzewa są znacznie prostsze do wdrożenia, jeśli nie muszą wspierać usunięcie. Lewicowy rb drzewo może się zmieścić w 50 lub więcej linii kodu. Zobacz http://www.cs.princeton.edu/~rs/talks/LLRB/ (przez Sedgewick)

Odpowiedział 19/04/2011 o 05:31
źródło użytkownik

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