Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 13376|Odpowiedź: 3

[Źródło] .NET/C# typ zapytań typu zapytań .NET/C#

[Skopiuj link]
Opublikowano 07.03.2022 16:47:50 | | | |
Wymagania: Musisz zdefiniować typ kolekcji tylko do odczytu, który nie będzie dodawał, usuwał ani nie modyfikował kolekcji, lecz jedynie zapytania do kolekcji. Mamy nadziejęIm szybciej zapytanie, tym lepiej

Porównania zbiorów wspólnych



Opisując złożoność algorytmu, o(1), o(n), o(logn), o(logn), o(logn), o(nlogn) są powszechnie używane do wyrażenia złożoności czasowej odpowiadającego algorytmu, która jest wyrazem złożoności przestrzenno-czasowej algorytmu. Używa się go nie tylko do reprezentowania złożoności czasowej, ale także do reprezentowania złożoności przestrzennej.

O jest poprzedzone funkcją w nawiasach, która wskazuje związek między czasem/przestrzenią zużywaną przez algorytm a ilością wyhodowanych danych. gdzie n oznacza ilość danych wejściowych.

Na przykład, jeśli złożoność czasowa wynosi O(n), oznacza to, że ilość danych wzrasta kilkukrotnie, a zużycie czasu również kilkakrotnie. Na przykład algorytmy powszechnego przechodzenia. Innym przykładem jest złożoność czasowa O(n^2), co oznacza, że gdy objętość danych wzrasta n razy, potrzeba czasu, aby zwiększyć n razy kwadratowych, co jest wyższą złożoność czasową niż liniowa. Na przykład sortowanie bąbelków to typowy algorytm O(n^2), który musi być skanowany n × n razy, aby uporządkować n liczb.

Innym przykładem jest O(logn), gdzie gdy dane rosną n razy, potrzeba czasu, aby zwiększyć czasy logn (log tutaj opiera się na 2, na przykład, gdy dane są zwiększone o 256 razy, czas potrzebny wzrasta tylko 8 razy, co jest mniej niż liniowe). Wyszukiwanie binarne to algorytm O (logn), który eliminuje połowę możliwości za każdym razem, gdy go znajdujemy, a wyszukiwanie w 256 danych wystarczy znaleźć 8 razy, aby znaleźć cel.

O(nlogn) jest tym samym, czyli n pomnożonym przez logn, gdy dane zwiększono o 256 razy, zużycie czasu wzrasta o 256 * 8 = 2048 razy. Ta złożoność jest wyższa niż liniowość poniżej kwadratu. Łączenie i sortowanie to złożoność czasowa O(nlogn).

O(1) to najniższa złożoność przestrzenno-czasowa, czyli czas/przestrzeń zużyta jest niezależna od rozmiaru danych wejściowych; niezależnie od tego, ile razy dane wejściowe są zwiększane, czas/przestrzeń pozostaje niezmieniona. Algorytm haszowania to typowa złożoność czasowa O(1), która może znaleźć cel po jednym obliczeniu (niezależnie od konfliktów), niezależnie od wielkości danych.

W tym artykule używa pary BenchmarkDotNetList、HashSet、SortedSet、SłownikZapytanie o benchmarking, odwołaj się do następujących:

.NET/C# wykorzystuje BenchmarkDotNet do testowania wydajności kodu
https://www.itsvse.com/thread-9576-1-1.html

.NET/C# Testowanie wydajności odbicia, emitowania, ekspresji
https://www.itsvse.com/thread-9598-1-1.html
Kod jest następujący:

Wynik testu: Znalezienie klucza w słowniku lub HashSetie jest znacznie szybsze niż wyszukiwanie w Liście i SortedSet. Złożoność czasowa algorytmów Słownika i HashSet wynosi O(1), a aby oszczędzać pamięć, wartość słownika nie jest dla nas użyteczna, więc nadal wybrałem pamięć HashSet.







Poprzedni:[Ćwiczenie] lista IP do zestawu dostępu IIS 10
Następny:ASP.NET Core (XI) trasa końcowa dodaje oprogramowanie pośrednicze do wyświetlania wszystkich usług DI
Opublikowano 07.03.2022 23:09:48 |
Przyjdź się uczyć na nowo.
 Ziemianin| Opublikowano 09.03.2022 09:55:12 |
Test HashSetu


 Ziemianin| Opublikowano 24.02.2024 17:45:14 |
.NET/C# Collection List, HashSet do określenia, czy dany element ma benchmark
https://www.itsvse.com/thread-10735-1-1.html
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com