Skip to content

Latest commit

 

History

History
54 lines (28 loc) · 3.49 KB

Hash Table Data Structure - Uber.md

File metadata and controls

54 lines (28 loc) · 3.49 KB
github
true

کیان:

بچه‌ها، میشه یکی بهم توضیح بده که Hash Tables چیه؟ 🤔

پیمان:

البته کیان جان. Hash Table یه ساختار داده‌ست که برای ذخیره‌سازی و بازیابی داده‌ها با سرعت بالا استفاده می‌شه. 🗂️🔗 Hash Table

ماهان:

بذار یه جور ساده‌تر بگم. فرض کن یه دفترچه تلفن داری که توش اسم و شماره تلفن آدم‌ها رو می‌نویسی. حالا اگه بخوای شماره تلفن یه نفر رو پیدا کنی، باید همه دفترچه رو بگردی، درسته؟ ولی اگه از Hash Table استفاده کنی، می‌تونی خیلی سریع شماره رو پیدا کنی. 📒🔗

حسین:

دقیقاً. در Hash Table، از یه تابع به نام Hash Function استفاده می‌کنیم که یه مقدار ورودی (مثل اسم) رو به یه عدد تبدیل می‌کنه. این عدد به عنوان کلید استفاده می‌شه و داده‌ها رو توی یه آرایه ذخیره می‌کنیم. مثلاً اگه اسم "علی" رو داشته باشیم، تابع Hash یه عدد مثل 5 تولید می‌کنه و ما شماره تلفن علی رو توی خونه 5 آرایه ذخیره می‌کنیم

مارال:

یه مثال ساده بزنم. فرض کن داریم یه لیست از دانشجوها و نمراتشون. اگه بخوایم نمره یه دانشجو رو سریع پیدا کنیم، می‌تونیم از Hash Table استفاده کنیم. اسم دانشجو رو به عنوان کلید و نمره رو به عنوان مقدار ذخیره می‌کنیم. اینجوری هر وقت بخوایم نمره یه دانشجو رو پیدا کنیم، فقط کافیه کلید رو به تابع Hash بدیم و مستقیماً به مقدار دسترسی پیدا کنیم. 🎓🔗

کیان:

آها، حالا فهمیدم. ولی اگه دو تا اسم مختلف همون کلید رو تولید کنن، چی می‌شه؟ 🤨

حسین:

این یه مسئله به نام Collision هست. برای حل این مشکل، روش‌های مختلفی وجود داره. یکی از رایج‌ترین روش‌ها، استفاده از Linked List هست. یعنی اگه دو تا کلید یه مقدار Hash یکسان تولید کنن، اون‌ها رو به صورت یه لیست توی همون خونه آرایه ذخیره می‌کنیم.

پیمان:

یه روش دیگه هم Open Addressing هست. توی این روش، اگه یه خونه پر باشه، دنبال خونه بعدی خالی می‌گردیم تا داده رو ذخیره کنیم. این روش‌ها کمک می‌کنن که Hash Table بهینه‌تر عمل کنه و سرعت دسترسی به داده‌ها بالا بمونه. 🔗 Open Addressing

کیان:

مرسی بچه‌ها، خیلی خوب توضیح دادید. حالا می‌فهمم چرا Hash Table اینقدر مفیده. 😊

لینک‌های مرتبط: