ساختمان داده (Data Structure) چیست؟
توضیحات کمی زیاده ولی بنظرم جذابه و برای همه افراد این کانال پیشنهاد میشه حتما تا آخرشو بخونن
تا الان هممون حداقل یک مفهوم سطحی از data structure رو یاد گرفتیم.
توی ویکی پدیا و اکثر وب سایت ها همون توضیح کوتاه رو میده.
اما بیاید یکم عمیق تر شیم
دیتا (Data) چیه؟
خب Structure که مشخصه یک آرایش، ساختار، سازمان دهی کردن هستش.
برای درک دیتا بهتره کمی درباره ساز و کار کامپیوتر بدونیم:
قلب تپنده کامپیوتر CPU هستش
سی پی یو یک چیزی داره به اسم ALU کار اصلی ایشون در واقع انجام محاسبه ها و انجام عملیات های منطقی روی داده ها توی پردازنده اصلی یا همون CPU هستش.
داده ها از کجا میان ؟
داده ها از main memory یا همون رم سیستم میان.
تا اونجا که خودتون در جریانید کامپیوتر ها باینری هستن پس اینطور در نظر بگیرید ما کلی صفر و یک توی رم داریم.
نکته ای که باید توجه کنید اینه کامپیوتر ذاتا فقط عدد میفهمه
اگه شما با هر زبان برنامه نویسی کار کرده باشید یک چیزی وجود داره به اسم انواع داده (data types)
هر زبان برنامه نویسی یک سری انواع داده اصلی رو میده.
اولین نوع داده ای که میشه اشاره کرد Boolean هستش. اینطوریه که اگه صفر بود false هستش و اگه غیر صفر بود true مثلا یک باشه true هستش
کامپیوتر هم اینو خیلی راحت میفهمه، بیسیک ترین نوع داده هستش که با یه بیت هم میشه نمایشش داد
انواع اعداد رو داریم مثلا int، short, long
اعداد اعشاری رو داریم مثل float و double
#data_structure
@khat_academy
توضیحات کمی زیاده ولی بنظرم جذابه و برای همه افراد این کانال پیشنهاد میشه حتما تا آخرشو بخونن
تا الان هممون حداقل یک مفهوم سطحی از data structure رو یاد گرفتیم.
توی ویکی پدیا و اکثر وب سایت ها همون توضیح کوتاه رو میده.
اما بیاید یکم عمیق تر شیم
دیتا (Data) چیه؟
خب Structure که مشخصه یک آرایش، ساختار، سازمان دهی کردن هستش.
برای درک دیتا بهتره کمی درباره ساز و کار کامپیوتر بدونیم:
قلب تپنده کامپیوتر CPU هستش
سی پی یو یک چیزی داره به اسم ALU کار اصلی ایشون در واقع انجام محاسبه ها و انجام عملیات های منطقی روی داده ها توی پردازنده اصلی یا همون CPU هستش.
داده ها از کجا میان ؟
داده ها از main memory یا همون رم سیستم میان.
تا اونجا که خودتون در جریانید کامپیوتر ها باینری هستن پس اینطور در نظر بگیرید ما کلی صفر و یک توی رم داریم.
نکته ای که باید توجه کنید اینه کامپیوتر ذاتا فقط عدد میفهمه
اگه شما با هر زبان برنامه نویسی کار کرده باشید یک چیزی وجود داره به اسم انواع داده (data types)
هر زبان برنامه نویسی یک سری انواع داده اصلی رو میده.
اولین نوع داده ای که میشه اشاره کرد Boolean هستش. اینطوریه که اگه صفر بود false هستش و اگه غیر صفر بود true مثلا یک باشه true هستش
کامپیوتر هم اینو خیلی راحت میفهمه، بیسیک ترین نوع داده هستش که با یه بیت هم میشه نمایشش داد
انواع اعداد رو داریم مثلا int، short, long
اعداد اعشاری رو داریم مثل float و double
#data_structure
@khat_academy
👍8❤2
خب تا اینجا هر نوع تایپی که اشاره کردیم عدد بود و همچنین کل چیزی که CPU میفهمه اعداد هستش
ولی خب سوال اینجاست. ما که فقط اعداد نداریم مثلا چیزی به اسم رشته (String) رو داریم. پس چطور باهاش کار می کنیم؟
رشته چطوری ساخته میشه؟
رشته به این شکل ساخته میشه که میایم بر اساس هر حرف عددی رو تعریف میکنیم. اگه یادتون باشه چیزی به اسم جدول ascii codes داریم که توی این جدول مشخص شده مثلا A میشه 65
پس چیزی که توی حافظه برای رشته نوشتیم در واقع عدد هستش
اگه همه چی عدد هستش. چجوری داده های پیچیده تر رو میسازیم؟
اینجا از Composition استفاده میکنیم. یعنی میایم چند تا نوع داده رو با هم ترکیب میکنیم یک نوع داده پیچیده تر رو میسازیم. مثلا دانش آموز رو میسازیم
دانش آموز خودش مثلا از
name: str
Student code: int
age: int
تشکیل شده.
#data_structure
@khat_academy
ولی خب سوال اینجاست. ما که فقط اعداد نداریم مثلا چیزی به اسم رشته (String) رو داریم. پس چطور باهاش کار می کنیم؟
رشته چطوری ساخته میشه؟
رشته به این شکل ساخته میشه که میایم بر اساس هر حرف عددی رو تعریف میکنیم. اگه یادتون باشه چیزی به اسم جدول ascii codes داریم که توی این جدول مشخص شده مثلا A میشه 65
پس چیزی که توی حافظه برای رشته نوشتیم در واقع عدد هستش
اگه همه چی عدد هستش. چجوری داده های پیچیده تر رو میسازیم؟
اینجا از Composition استفاده میکنیم. یعنی میایم چند تا نوع داده رو با هم ترکیب میکنیم یک نوع داده پیچیده تر رو میسازیم. مثلا دانش آموز رو میسازیم
دانش آموز خودش مثلا از
name: str
Student code: int
age: int
تشکیل شده.
#data_structure
@khat_academy
👍10❤1
یک روش دیگه هم برای مدیریت و ساخت انواع جدید به اسم aggregation هستش. یعنی یک سری از آبجکت ها، اشیا رو کنار هم قرار بدم تا یک چیز بزرگ تری رو بسازم
مثلا تعدادی دانشجو رو کنار هم قرار میدیم و کلاس رو میسازیم
این اشیا بصورت مستقل خودشون هویت دارن و شخصیت مستقل دارن
وقتی کنار هم میذاریمشون بهش میگیم aggregation
حالا وقتی که میایم آبجکت ها رو کنار هم قرار میدیم، جاییه که Data Structure به دادمون میرسه.
یعنی وقتی میخوایم چند تا آبجکت رو کنار هم قرار بدیم، باید از یک ساختار داده، از یک ساختمان داده استفاده کنیم تا این آبجکت ها رو کنار هم بچینیم.
خب اینهمه توضیح دادیم تا رسیدیم به اینجا که ساختمان داده چیه و چه کاربردی داره
یکی از اساسی ترین نوع ساختمان داده ای که داریم آرایه (array) هستش که کاملا بیسیک هستش و توی همه ی زبان ها وجود داره.
امیدوارم قابل فهم توضیح داده باشم
#data_structure
@khat_academy
مثلا تعدادی دانشجو رو کنار هم قرار میدیم و کلاس رو میسازیم
این اشیا بصورت مستقل خودشون هویت دارن و شخصیت مستقل دارن
وقتی کنار هم میذاریمشون بهش میگیم aggregation
حالا وقتی که میایم آبجکت ها رو کنار هم قرار میدیم، جاییه که Data Structure به دادمون میرسه.
یعنی وقتی میخوایم چند تا آبجکت رو کنار هم قرار بدیم، باید از یک ساختار داده، از یک ساختمان داده استفاده کنیم تا این آبجکت ها رو کنار هم بچینیم.
خب اینهمه توضیح دادیم تا رسیدیم به اینجا که ساختمان داده چیه و چه کاربردی داره
یکی از اساسی ترین نوع ساختمان داده ای که داریم آرایه (array) هستش که کاملا بیسیک هستش و توی همه ی زبان ها وجود داره.
امیدوارم قابل فهم توضیح داده باشم
#data_structure
@khat_academy
👍14
آموزش ساختمان داده بطور مختصر (برای قسمت عملیش با پایتون انجامش دادم اما توضیحات بصورت جامع هستش *فارسی)
https://github.com/alireza-fa/data-structures-python
اول راه ساختمان داده هستیم و تو روز های آینده کامل میشه.
اگه امکانش هست star بدید ❤️
#data_structure
@khat_academy
https://github.com/alireza-fa/data-structures-python
اول راه ساختمان داده هستیم و تو روز های آینده کامل میشه.
اگه امکانش هست star بدید ❤️
#data_structure
@khat_academy
GitHub
GitHub - alireza-fa/data-structures-python: معرفی ساختمان داده و انوع آن بصورت اجمالی و پیاده سازی ساختمان داده های مختلف در پایتون
معرفی ساختمان داده و انوع آن بصورت اجمالی و پیاده سازی ساختمان داده های مختلف در پایتون - alireza-fa/data-structures-python
👏4🔥3👍1🥰1
Media is too big
VIEW IN TELEGRAM
آشنایی با ساختار داده ی لیست های پایتون
تو این ویدیو با Array و Dynamic array آشنا میشید که لیست های پایتون dynamic array هستند.
توضیحات تکمیلی:
در لیست پایتون ما بجای ذخیره دیتا میایم اشاره گر (pointer) رو ذخیره میکنیم که به فضای دیتا اشاره میکنه.
توی لیست پایتون insert, remove کردن o(n) هستش.
اما خب با توجه به ایندکس میتونه متفاوت باشه.
برای مثال remove کردن آخر لیست o(1) هستش.
در آخر ویدیو اشاره شد که در linked list ها insert, add, remove همیشه o(1) هستند که بعدا در مورد پیاده سازیش و تفاوتش با Array list صحبت میکنیم.
همچنین برای آشنایی بیشتر با ساختمان داده میتونید این ریپو دنبال کنید:
https://github.com/alireza-fa/data-structures-python
همچنین اگه نیاز میدونید ساختار داده رو از صفر براتون توضیح بدم بگید شاید انجامش دادم
#data_structure #python
@khat_academy
تو این ویدیو با Array و Dynamic array آشنا میشید که لیست های پایتون dynamic array هستند.
توضیحات تکمیلی:
در لیست پایتون ما بجای ذخیره دیتا میایم اشاره گر (pointer) رو ذخیره میکنیم که به فضای دیتا اشاره میکنه.
توی لیست پایتون insert, remove کردن o(n) هستش.
اما خب با توجه به ایندکس میتونه متفاوت باشه.
برای مثال remove کردن آخر لیست o(1) هستش.
در آخر ویدیو اشاره شد که در linked list ها insert, add, remove همیشه o(1) هستند که بعدا در مورد پیاده سازیش و تفاوتش با Array list صحبت میکنیم.
همچنین برای آشنایی بیشتر با ساختمان داده میتونید این ریپو دنبال کنید:
https://github.com/alireza-fa/data-structures-python
همچنین اگه نیاز میدونید ساختار داده رو از صفر براتون توضیح بدم بگید شاید انجامش دادم
#data_structure #python
@khat_academy
🔥7
جدول هش (hash table) چیست
https://blog.faradars.org/hash-tables/
#Data_structure #hash_table
@Syntax_fa
https://blog.faradars.org/hash-tables/
#Data_structure #hash_table
@Syntax_fa
👍7
برای آشنایی با ساختمان داده در پایتون + مثال هایی از نحوه پیاده سازیش میتونید به این رپازیتوری سر بزنید:
https://github.com/alireza-fa/data-structures-python
#Data_structure
@Syntax_fa
https://github.com/alireza-fa/data-structures-python
#Data_structure
@Syntax_fa
GitHub
GitHub - alireza-fa/data-structures-python: معرفی ساختمان داده و انوع آن بصورت اجمالی و پیاده سازی ساختمان داده های مختلف در پایتون
معرفی ساختمان داده و انوع آن بصورت اجمالی و پیاده سازی ساختمان داده های مختلف در پایتون - alireza-fa/data-structures-python
👍4
Syntax | سینتکس
سوال مصاحبه فرض کنید ما یک linked list یک طرفه (next) داریم. چجوری مقادیر داخل این لیست رو از آخر به اول مرتب کنیم؟ #interview_question @Syntax_fa
توضیح:
این یک سوالی است که برای حل کردنش باید درباره data structures ها بدانید.
برای اینکه بفهمیم صورت سوال از ما چه میخواهد اول از همه باید با linked list ها آشنا شویم.
لیست های پیوندی بر خلاف لیست ها، از یک آرایه ساخته نشده اند.
ساختار هر عنصر یک لیست پیوندی به این صورت است که یک node است و در هر node مقدار عنصر و آدرس node بعدی را ذخیره می کنیم.
برای مثال اگر بخواهیم به عنصر index بیستم دسترسی داشته باشیم باید از head یعنی اولین node لیست پیوندی شروع به پیمایش کنیم و به next هر node سر بزنیم تا به index مورد نظر برسیم.
اما مزیت لیست پیوندی این است که insert، delete با o(1) انجام می شود.
همچنین boubly linked list داریم که هر node به علاوه ذخیره کردن آدرس نود بعدی، آدرس نود قبلی خود را هم ذخیره می کند.
در این مسئله چالش اینجاست که چجوری عناصر داخل یک لیست پیوندی یک طرفه را از آخر به اول مرتب کنیم.
توضیحات بیشتر درباره ساختمان داده:
https://github.com/alireza-fa/data-structures-python
#data_structure
@Syntax_fa
این یک سوالی است که برای حل کردنش باید درباره data structures ها بدانید.
برای اینکه بفهمیم صورت سوال از ما چه میخواهد اول از همه باید با linked list ها آشنا شویم.
لیست های پیوندی بر خلاف لیست ها، از یک آرایه ساخته نشده اند.
ساختار هر عنصر یک لیست پیوندی به این صورت است که یک node است و در هر node مقدار عنصر و آدرس node بعدی را ذخیره می کنیم.
برای مثال اگر بخواهیم به عنصر index بیستم دسترسی داشته باشیم باید از head یعنی اولین node لیست پیوندی شروع به پیمایش کنیم و به next هر node سر بزنیم تا به index مورد نظر برسیم.
اما مزیت لیست پیوندی این است که insert، delete با o(1) انجام می شود.
همچنین boubly linked list داریم که هر node به علاوه ذخیره کردن آدرس نود بعدی، آدرس نود قبلی خود را هم ذخیره می کند.
در این مسئله چالش اینجاست که چجوری عناصر داخل یک لیست پیوندی یک طرفه را از آخر به اول مرتب کنیم.
توضیحات بیشتر درباره ساختمان داده:
https://github.com/alireza-fa/data-structures-python
#data_structure
@Syntax_fa
👍5