📘
Grokking-Algorithms book
PostgreSQL
  • Content
  • Introduction to Algorithms
    • Introduction
    • Binary Search
    • Big O notation
    • Recap
  • Selection sort
    • How memory works
    • Arrays and linked lists
    • Selection sort
    • Recap
  • Recursion
    • Recursion
    • Base case and recursive case
    • The stack
    • Recap
  • Quicksort
    • Divide & conquer
    • Quicksort
    • Big O notation revisited
    • Recap
  • Hash tables
    • Hash functions
    • Use cases
    • Collisions
    • Performance
    • Recap
  • Breadth-first search
    • Introduction to graph
    • What is a graph
    • Breadth-first search
    • Implementing the graph
    • Implementing the algorithm
    • Recap
  • Dijkstra's algorithm
    • Working with Dijkstra's algorithm
    • Terminology
    • Trading for a piano
    • Negative-weight edges
    • Implementation
    • Recap
  • Greedy Algorithms
    • The classroom scheduling problem
    • The knapsack problem
    • The set-covering problem
    • NP-complete problems
    • Traveling salesperson, step by step
    • Recap
  • Dynamic programming
    • The knapsack problem
    • Knapsack problem FAQ
    • Longest common substring
    • Recap
  • K-nearest neighbors
    • Classifying oranges vs. grapefruit
    • Building a recommendations system
    • Introduction to machine learning
    • Recap
  • Where to go next
    • Trees
    • Inverted indexes
    • The Fourier transform
    • Parallel algorithms
    • MapReduce
    • Bloom filters and HyperLogLog
    • The SHA algorithms
    • Locality-sensitive hashing
    • Diffie-Hellman key exchange
    • Linear programming
    • Epilogue
  • Answers to exercises
    • Chapter 1
    • Chapter 2
    • Chapter 3
    • Chapter 4
    • Chapter 5
    • Chapter 6
    • Chapter 7
    • Chapter 8
    • Chapter 9
    • Chapter 10
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub

Hash tables

PreviousRecapNextHash functions

Last updated 1 year ago

Was this helpful?

• Siz eng foydali asosiy ma'lumotlar tuzilmalaridan biri bo'lgan xesh-jadvallar haqida bilib olasiz. Xesh jadvallari ko'p foydalanishga ega; bu bob umumiy foydalanish holatlarini qamrab oladi.

• Siz xesh-jadvallarning ichki qismlari haqida bilib olasiz: amalga oshirish, to'qnashuvlar va xesh funktsiyalari. Bu sizga hash jadvalining ishlashini qanday tahlil qilishni tushunishga yordam beradi

Aytaylik, siz oziq-ovqat do'konida ishlaysiz. Xaridor mahsulot sotib olayotganda, siz kitobdan narxni izlashingiz kerak. Agar kitob alifbosiz bo'lsa, olma uchun har bir satrni ko'rib chiqish sizga uzoq vaqt talab qilishi mumkin. Siz har bir satrga qarashingiz kerak bo'lgan 1-bobdan boshlab oddiy qidiruvni amalga oshirasiz. Bunga qancha vaqt ketishini eslaysizmi? Vaqtida. Agar kitob alifbo tartibida bo'lsa, olma narxini topish uchun ikkilik qidiruvni amalga oshirishingiz mumkin. Bu faqat O (log n) vaqtini oladi.

Eslatib oʻtamiz, O(n) va O(log n) vaqtlari oʻrtasida katta farq bor! Aytaylik, siz sekundiga kitobning 10 satrini ko'rib chiqishingiz mumkin. Mana, oddiy qidiruv va ikkilik qidiruv sizni qancha vaqt oladi.

Ikkilik qidiruv juda tez ekanligini allaqachon bilasiz. Ammo kassir sifatida kitobdagi narsalarni qidirish, hatto kitob tartiblangan bo'lsa ham, og'riqdir. Kitobdagi narsalarni qidirayotganingizda, mijozning bug'lanishini his qilishingiz mumkin. Sizga haqiqatan ham kerak bo'lgan narsa - barcha ismlar va narxlarni yodlab olgan do'st. Keyin hech narsa qidirishingiz shart emas: siz undan so'raysiz va u sizga darhol javobni aytadi.

Sizning do'stingiz Meggi kitob qanchalik katta bo'lishidan qat'i nazar, har qanday mahsulot uchun O(1) vaqt ichida narxni berishi mumkin. U ikkilik qidiruvdan ham tezroq.

Qanday ajoyib inson! Qanday qilib "Maggie" ni olish mumkin? Keling, ma'lumotlar tuzilmasi shlyapalarini kiyaylik. Siz hozirgacha ikkita ma'lumotlar tuzilmasini bilasiz: massivlar va ro'yxatlar (men steklar haqida gapirmayman, chunki siz stekdagi biror narsani "qidira olmaysiz"). Siz ushbu kitobni massiv sifatida amalga oshirishingiz mumkin.

Massivdagi har bir element haqiqatda ikkita elementdan iborat: biri mahsulot turining nomi, ikkinchisi esa narx. Agar siz ushbu massivni nomi bo'yicha saralasangiz, unda elementning narxini topish uchun ikkilik qidiruvni amalga oshirishingiz mumkin. Shunday qilib, siz elementlarni O (log n) vaqtida topishingiz mumkin. Lekin siz O (1) vaqtida narsalarni topmoqchisiz. Ya'ni, siz "Maggie" qilishni xohlaysiz. Bu erda xesh-funksiyalar keladi.

Page cover image
worker
sorted vs unsorted
simple vs binary search
Maggie
Maggie in Big O
array