Cum se poate mări viteza de inserare în stivele de colectare din rusă

Se pot face mai multe îmbunătățiri:

  1. notExistDuplicate este implementat ca o căutare binară. deoarece acest lucru este posibil, deoarece aveți o matrice sortată după obiecte hashcod'am
  2. sortByHashCode pentru a implementa folosind sortarea rapidă. sau îmbinare sort. sau orice alt algoritm cu asimptotice mai bune decât O (n ^ 2)
  3. Puteți face inserția mai inteligentă - nu sortați de fiecare dată când este vorba de o nouă matrice. Ie notExistDuplicate returnează indicele elementului - în cazul în care elementul este găsit, sau - (poziția + 1), în cazul în care obiectul nu este găsit. Apoi, trebuie doar să copiați elementele de matrice, în timp ce introducerea unui element nou în celula cu o poziție de index.

A răspuns la 29 ianuarie, la ora 10:09

mulțumesc pentru răspuns. În ceea ce privește punctul 3, nu am înțeles cum doesExistDuplicate nu va cunoaște celula cerută? Deci trebuie să aplicați sortarea oricum? Atunci, care este diferența aici sau aici? Sau m-am înțeles cumva greșit? - Pavel pe 30 ianuarie, la 3:01

@ Metoda Paul va produce o căutare binară, în timpul căreia se va explica indicele sursă al elementului sau poziția în care ar trebui să fie. Da, este necesară sortarea. Metoda se numește o dată, dar datorită faptului că acesta va returna un indice, mai degrabă decât o valoare boolean, putem reduce și mai mult numărul de operațiuni, datorită acestui fapt și întregul impuls - Artem Konovalov 30 ianuarie la 07:15

Articole similare