Middle
List va Dictionary'da qidiruvning algoritmik murakkabligi qanday? Dictionary ichki tuzilishi qanday?
sobes.tech AI
AIdan javob
Algoritmik murakkablik:
-
Listichida qidirish (masalan,List<T>C# da) — odatda, bu chiziqli qidirish bo‘lib, murakkabligi O(n), chunki elementlarni tartib bilan ko‘rib chiqish kerak. -
Dictionaryichida qidirish — o‘rtacha murakkabligi O(1), chunki hash-jadvaldan foydalaniladi.
Dictionary tuzilishi:
C# da Dictionary<TKey, TValue> hash-jadval asosida amalga oshirilgan. Kalit hash-funksiyadan foydalanib hash qilinadi, bu kalitni bucketlar massivida indeksga aylantiradi. Har bir bucket zanjirli ro‘yxat yoki boshqa tuzilmani o‘z ichiga oladi. Element qo‘shishda yoki qidirishda:
- Kalitning hash qiymati hisoblanadi.
- Hashga asoslangan bucket aniqlanadi.
- Bucket ichida kalit bo‘yicha qidiriladi (
Equalsyordamida solishtiriladi).
Bu kalit bo‘yicha tezkor kirishni ta’minlaydi, agar hash taqsimoti yaxshi bo‘lsa.
Misol:
var dict = new Dictionary<string, int>();
dict["apple"] = 5;
int value = dict["apple"]; // Tez kirish