Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 13376|Atbildi: 3

[Avots] .NET/C# kolekcijas tipa vaicājuma etalons

[Kopēt saiti]
Publicēts 07.03.2022 16:47:50 | | | |
Prasības: Jums ir jādefinē tikai lasāmas kolekcijas tips, kas nepievienos, neizdzēsīs vai nemodificēs kolekciju, bet tikai vaicās kolekciju. Mēs ceramJo ātrāks vaicājums, jo labāk

Bieži sastopamie kopu salīdzinājumi



Aprakstot algoritma sarežģītību, o(1), o(n), o(logn), o(logn), o(nlogn) parasti tiek izmantoti, lai izteiktu attiecīgā algoritma laika sarežģītību, kas ir algoritma telpiskās un laika sarežģītības izpausme. To izmanto ne tikai, lai attēlotu laika sarežģītību, bet arī telpisko sarežģītību.

O seko funkcija iekavās, kas norāda attiecību starp algoritma patērēto laiku/telpu un iegūto datu apjomu. kur n apzīmē ievades datu apjomu.

Piemēram, ja laika sarežģītība ir O(n), tas nozīmē, ka datu apjoms palielinās vairākas reizes, un arī laika patēriņš palielinās vairākas reizes. Piemēram, parastie šķērsošanas algoritmi. Vēl viens piemērs ir laika sarežģītība O(n^2), kas nozīmē, ka, palielinoties datu apjomam n reizes, ir nepieciešams laiks, lai palielinātu n kvadrātreizes, kas ir lielāka laika sarežģītība nekā lineārā. Piemēram, burbuļu kārtošana ir tipisks O(n^2) algoritms, kas jāskenē n × n reizes, lai kārtotu n skaitļus.

Vēl viens piemērs ir O(logn), kad dati palielinās n reizes, ir nepieciešams laiks, lai palielinātu logn laikus (žurnāls šeit ir balstīts uz 2, piemēram, ja dati tiek palielināti par 256 reizēm, nepieciešamais laiks palielinās tikai par 8 reizēm, kas ir mazāks par lineāro. Binārā meklēšana ir O (logn) algoritms, kas katru reizi, kad tas tiek atrasts, novērš pusi no iespējām, un meklēšana 256 datos ir jāatrod tikai 8 reizes, lai atrastu mērķi.

O(nlogn) ir vienāds, tas ir, n reizināts ar logn, kad dati tiek palielināti par 256 reizēm, laika patēriņš palielinās par 256 * 8 = 2048 reizes. Šī sarežģītība ir augstāka nekā linearitāte zem kvadrāta. Sapludināt un kārtot ir O(nlogn) laika sarežģītība.

O(1) ir zemākā telpiskā laika sarežģītība, tas ir, patērētais laiks/telpa ir neatkarīga no ievades datu lieluma, neatkarīgi no tā, cik reižu ievades dati tiek palielināti, patērētais laiks/telpa paliek nemainīga. Jaukšanas algoritms ir tipiska O(1) laika sarežģītība, kas var atrast mērķi pēc viena aprēķina (neatkarīgi no konfliktiem), neatkarīgi no tā, cik lieli ir dati.

Šajā rakstā tiek izmantots BenchmarkDotNet pārisSaraksts、HashSet、SortedSet、VārdnīcaVaicājums salīdzinošai novērtēšanai, skatiet sekojošo:

.NET/C# izmanto BenchmarkDotNet, lai pārbaudītu koda veiktspēju
https://www.itsvse.com/thread-9576-1-1.html

.NET/C# atstarošana, izstarošana, izteiksmes veiktspējas testēšana
https://www.itsvse.com/thread-9598-1-1.html
Kods ir šāds:

Testa rezultāts: Atslēgas atrašana vārdnīcā vai HashSet ir daudz ātrāka nekā meklēšana sarakstā un SortedSet. Vārdnīcas un HashSet algoritmu laika sarežģītība ir O(1), un, lai ietaupītu atmiņu, vārdnīcas vērtība mums nav noderīga, tāpēc es joprojām izvēlējos HashSet krātuvi.







Iepriekšējo:[Prakse] IIS 10 piekļuves kopas IP melnais saraksts
Nākamo:ASP.NET Core (XI) galapunkta maršruts pievieno starpprogrammatūru, lai parādītu visus DI pakalpojumus
Publicēts 07.03.2022 23:09:48 |
Nāciet mācīties vēlreiz.
 Saimnieks| Publicēts 09.03.2022 09:55:12 |
 Saimnieks| Publicēts 24.02.2024 17:45:14 |
.NET/C# kolekcijas saraksts, HashSet, lai noteiktu, vai elementam ir etalons
https://www.itsvse.com/thread-10735-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com