Cea mai simplă de a pune în aplicare structura de date on-line sortate în C

voturi
1

Scanez o sursă mare de date, în prezent, aproximativ 8 milioane de intrări, extragerea pe șir de caractere per intrare, pe care vreau în ordine alfabetică.

Currenlty le - am pus într - o matrice apoi sortați un index pentru a le folosind qsort()care funcționează bine.

Dar, din curiozitate mă gândesc în loc de a introduce fiecare șir de caractere într-o structură de date care le menține în ordine alfabetică după cum le-am scana de la sursa de date, în parte pentru experiența emlplementing unul, în parte pentru că se va simți mai repede, fara a astepta pentru sortare pentru a finaliza după scanare a finalizat (-:

Ce structură de date ar fi cea mai simplă de a pune în aplicare în C?

ACTUALIZAȚI

Pentru a clarifica, singurele operații care am nevoie pentru a efectua sunt introducerea unui element și dumping indicele atunci când este făcut, prin care mă refer pentru fiecare element, în ordinea inițială arunca un număr întreg care reprezintă ordinea în care aceasta se află în după sortare.

REZUMAT

  • Cel mai simplu să pună în aplicare sunt arbori de căutare binare.
  • Autoechilibrare arbori binari sunt mult mai bine, dar netrivială să pună în aplicare.
  • Inserția se poate face iterativ, dar în ordine traversal pentru dumping rezultate și post-comandă traversal pentru ștergerea arborelui atunci când se realizează atât necesită fie de recurență sau o stivă explicită.
  • Fără echilibrare de punere în aplicare, se execută de intrare comandate va avea ca rezultat degenerate cel mai rău caz, care este o listă legată. Acest lucru înseamnă copaci adânci care au un impact grav viteza operației de inserție.
  • Amestecare de intrare ușor poate rupe comandat de intrare în mod semnificativ și este mai ușor să pună în aplicare această echilibrare.
Întrebat 11/04/2011 la 18:23
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
3

Copaci binar de căutare. Sau arbori de căutare cu autoechilibrare. Dar nu vă așteptați să fie cele mai rapid decât o gamă dinamică pusă în aplicare în mod corespunzător, deoarece matrice au mult mai bună localizare de referință decât structurile pointer. De asemenea, BSTs neechilibrate poate „merge liniar“, astfel încât întregul algoritm devine O ( n ²), la fel ca sortarerapidă.

Publicat 11/04/2011 la 18:24
sursa de către utilizator

voturi
0

Ai putea pune în aplicare un algoritm de sortare mai rapid astfel ne Timsort sau alți algoritmi de sortare cu o Nlog (n) cel mai rău caz și doar de căutare folosind căutarea binară, deoarece sa mai rapid în cazul în care lista este sortată.

Publicat 11/04/2011 la 18:29
sursa de către utilizator

voturi
0

ar trebui să aruncăm o privire la Trie structură de date wikilegătură cred că acest lucru va servi ceea ce vrei

Publicat 18/04/2011 la 08:20
sursa de către utilizator

voturi
2

Utilizați deja abordarea optimă. Sortare la sfârșitul anului va fi mult mai ieftin decât menținerea unei on-line sortate structura de date. Puteți obține același O (LOGN), cu un rb-copac, dar constanta va fi mult mai rău, să nu mai vorbim de deasupra capului spațiu semnificativ.

Acestea fiind spuse, arbori AVL și rb-arbori sunt mult mai simplu de implementat , dacă nu aveți nevoie pentru a sprijini ștergerea. Înclinați spre stânga copac rb se pot potrivi în jur de 50 de linii de cod. A se vedea http://www.cs.princeton.edu/~rs/talks/LLRB/ (de Sedgewick)

Publicat 19/04/2011 la 05:31
sursa de către utilizator

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