آشنایی کامل با الگوریتم و ساختارهای داده در پایتون

January 2022


ساختار داده ها و الگوریتم ها در پایتون دو مورد از اساسی ترین مفاهیم در علوم کامپیوتر هستند. این دو ابزارهای ضروری برای هر برنامه نویسی هستند. ساختارهای داده در پایتون با سازماندهی و ذخیره سازی داده ها در حافظه زمانی که یک برنامه در حال پردازش آن است، سروکار دارد. از سوی دیگر، الگوریتم های پایتون به مجموعه دقیق دستورالعمل هایی اشاره دارد که به پردازش داده ها برای یک هدف خاص کمک می کند.

 

متناوبا، می توان گفت که ساختارهای داده های مختلف به طور منطقی توسط الگوریتم ها برای حل یک مشکل خاص در تجزیه و تحلیل داده ها استفاده می شود. چه یک مشکل در دنیای واقعی باشد و چه یک سوال معمولی مرتبط با کدنویسی، اگر می‌خواهید راه‌حل دقیقی پیدا کنید، درک ساختار داده‌ها و الگوریتم‌ها در پایتون بسیار مهم است. در این مقاله، بحث مفصلی در مورد الگوریتم های مختلف پایتون و ساختار داده ها خواهید دید.

 

دوره پیشنهادی: دوره آموزش پایتون

 

 #  ساختار داده در پایتون چیست؟

ساختارهای داده راهی برای سازماندهی و ذخیره سازی داده ها هستند. آنها رابطه بین داده ها و عملیات منطقی مختلفی را که می توان روی داده ها انجام داد توضیح می دهند. روش های زیادی وجود دارد که از طریق آنها می توان ساختارهای داده را طبقه بندی کرد. یک راه این است که آنها را به انواع داده های اصلی و فرعی دسته بندی کنیم.

 

ساختارهای داده اصلی شامل اعداد صحیح، شناور، رشته ها و بولی هستند، انواع ساختارهای داده فرعی عبارتند از Array، List، Tuples، Dictionary، Sets و Files. برخی از این انواع داده های فرعی، مانند List، Tuples، Dictionaries و Sets، در پایتون ساخته شده اند. دسته دیگری از ساختارهای داده در پایتون وجود دارد که توسط کاربر تعریف شده است. یعنی کاربران آنها را تعریف می کنند. اینها عبارتند از: Stack، Queue، Linked List، Tree، Graph و HashMap.

 

 

 +  ساختارهای داده اصلی

اینها ساختارهای داده پایه در پایتون هستند که حاوی مقادیر داده خالص و ساده هستند و به عنوان بلوک های ساختمانی برای دستکاری داده ها عمل می کنند. اجازه دهید در مورد چهار نوع متغیر اصلی در پایتون صحبت کنیم:

 

 

 

 

 

 

 +  ساختارهای داده فرعی داخلی پایتون

برخلاف ساختارهای داده اصلی، انواع داده های فرعی نه تنها مقادیر را ذخیره می کنند، بلکه مجموعه ای از مقادیر را در قالب های مختلف ذخیره می کنند. اجازه دهید نگاهی به ساختارهای داده فرعی در پایتون بیندازیم:

 

 

 

 

 

 

 +  ساختارهای داده فرعی خارجی پایتون

در ادامه بحث ما در مورد ساختارهای داده و الگوریتم‌ها در پایتون، مروری کوتاه بر ساختارهای داده‌های مختلف خارجی(user defined) پایتون داشته باشیم:

 

 

 

 

 

 

 #  الگوریتم در پایتون چیست؟

الگوریتم‌های پایتون مجموعه‌ای از دستورالعمل‌ها هستند که برای دستیابی به راه‌حل برای یک مسئله معین اجرا می‌شوند. از آنجایی که الگوریتم ها مختص زبان نیستند، می توان آنها را در چندین زبان برنامه نویسی پیاده سازی کرد. هیچ قانون استانداردی برای نوشتن الگوریتم ها وجود ندارد. آنها وابسته به منبع و مشکل هستند، اما برخی از ساختارهای کد مشترک، مانند کنترل جریان (if-else) و حلقه ها (do، while، for) را به اشتراک می گذارند. در بخش‌های بعدی به طور مختصر به الگوریتم‌های پیمایش درخت، مرتب‌سازی، جستجو و نمودار می‌پردازیم.

 

 

 +  الگوریتم های پیمایش درختی

پیمایش(traverse) فرآیند بازدید از تمام گره های یک درخت است که از گره ریشه شروع می شود. یک درخت را می توان به سه روش مختلف طی کرد:

 

 

 

 +  الگوریتم های مرتب سازی

الگوریتم‌های مرتب‌سازی روش‌هایی را برای چیدمان داده‌ها در یک قالب خاص نشان می‌دهند. مرتب سازی تضمین می کند که جستجوی داده ها در سطح بالایی بهینه شده و داده ها در قالب قابل خواندن ارائه می شوند. بیایید به سه نوع مختلف الگوریتم مرتب سازی در پایتون نگاه کنیم:

 

 

 

 +  الگوریتم های جستجو

الگوریتم های جستجو به بررسی و بازیابی یک عنصر از ساختارهای مختلف داده کمک می کنند. یکی از انواع الگوریتم جستجو از روش جستجوی متوالی استفاده می کند که در آن لیست به صورت متوالی پیمایش می شود و هر عنصر بررسی می شود (جستجوی خطی). در نوع دیگر، جستجوی بازه ای، عناصر در ساختارهای داده مرتب شده (جستجوی باینری) جستجو می شوند. اجازه دهید به چند نمونه نگاه کنیم:

 

جستجوی خطی(linear search): در این الگوریتم هر آیتم به صورت متوالی یکی یکی جستجو می شود.

جستجوی دودویی(binary search): در این الگوریتم فاصله جستجو بارها و بارها به نصف تقسیم می شود. اگر عنصری که باید جستجو شود کمتر از جزء مرکزی بازه باشد، فاصله به نیمه پایین‌تر کاهش می‌یابد. در غیر این صورت به نیمه بالایی باریک می شود. این فرآیند تا زمانی که مقدار مورد نظر پیدا شود تکرار می شود

 

 

 #  نتیجه گیری

چه در برنامه نویسی کهنه کار باشید و چه تازه کار، نمی توانید ساختارهای داده و الگوریتم های پایتون را نادیده بگیرید. این مفاهیم هنگام انجام عملیات بر روی داده ها بسیار مهم هستند و باید پردازش داده ها را بهینه کنید. در حالی که ساختارهای داده به سازماندهی اطلاعات کمک می کنند، الگوریتم ها دستورالعمل هایی را برای حل مشکل تجزیه و تحلیل داده ها ارائه می دهند. آنها با هم راهی برای دانشمندان کامپیوتر برای پردازش اطلاعات داده شده به عنوان داده های ورودی فراهم می کنند.

 


3:06:52


0

intro

5:18

رایگان

1

complexity

9:4

رایگان

2

constant complexity

5:13

رایگان

3

log complexity

5:17

رایگان

4

linear complexity

3:49

رایگان

5

polynomial complexity

3:5

رایگان

6

exponential complexity

3:58

رایگان

7

limit

10:25

رایگان

8

top one

8:57

رایگان

9

caesar cipher

19:43

رایگان

10

search insert

9:41

رایگان

11

is isomorphic

10:23

رایگان

12

a1z26 cipher

6:35

رایگان

13

bead sort

8:56

رایگان

14

buy-sell stock

9:32

رایگان

15

zig zag iterator

6:37

رایگان

16

move zeros

2:52

رایگان

17

remove min

4:56

رایگان

18

OneTimePad cipher

9:32

رایگان

19

two sum

5:7

رایگان

20

rotate

6:10

رایگان

21

search range

9:7

رایگان

22

linear search

4:34

رایگان

23

binary search

6:45

رایگان

24

first occurrence

4:6

رایگان

25

last occurrence

5:28

رایگان

26

done

1:42

رایگان


دوره‌های پیشنهادی

دوره آموزش تست نویسی در پایتون

دوره آموزش تست نویسی در پایتون

دوره آموزش Multi Threading در پایتون

دوره آموزش Multi Threading در پایتون

دوره آموزش RabbitMQ

دوره آموزش RabbitMQ

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

باب

November 2021

عالی بود

ارسال نظر


fds

September 2021

سلام
دوره الگوریتم نویسی در پایتون عالی بود. لطفا الگوریتم‌های بیشتری اضافه کنید.

ارسال نظر


نقی

June 2021

سلام امیر آقا باباب عالی هستی تشکر.

ارسال نظر


پوریا شفیعی

December 2020

تشکر فوق العاده بود

ارسال نظر


مهدی

October 2020

داده کاوی نمیزاری ؟

ارسال نظر


امیرحسین بیگدلو

October 2020

تو فکرشم

پویا

October 2020

عالی هستی.
ادامه بده سمت مباحث پایتونی هوش مصنوعی هم اگرتونستی برو...

ارسال نظر


امیرحسین بیگدلو

October 2020

ممنون
در زمینه هوش مصنوعی آنچنان تجربه‌ای ندارم اما شاید از یکی از همکارا کمک گرفتم و براتون دوره ضبط کردم.


پویا

October 2020

دمت گرم عالیی هستی