BubbleSort:
یک الگوریتیم برای مرتب سازی ارایه ها وجود دارد که در بالا ان را مشاهده می کنید این الگوریتم به این صورت عمل می کند که دو حلقه for وجورد دارید حلقه اول عدد در اندیس i را میگیرد و در حلقه دوم با تمام اعداد در کل ارایه مقایسه می کند اگر لازم باشد جا به جایی صورت میگیرد و در غیر این صورت به مقایسه ادامه می دهد تا به آخر ارایه برسد.
پیچیدگی زمانی این الگوریتم در بدترین و میانگین حالت n^2 می باشد و در بهترین حالت نیز میتواند پیچدگی nرا نیز داشته باشد. این الگوریتم مناسبی برای مرتب سازی نمی باشد زیرا ما دنبال الگوریتم هایی هستیم که با پیچیدگی زمانی کمتری نیز داشته باشد.
📣👨💻 @AlgorithmDesign_DataStructuer
یک الگوریتیم برای مرتب سازی ارایه ها وجود دارد که در بالا ان را مشاهده می کنید این الگوریتم به این صورت عمل می کند که دو حلقه for وجورد دارید حلقه اول عدد در اندیس i را میگیرد و در حلقه دوم با تمام اعداد در کل ارایه مقایسه می کند اگر لازم باشد جا به جایی صورت میگیرد و در غیر این صورت به مقایسه ادامه می دهد تا به آخر ارایه برسد.
پیچیدگی زمانی این الگوریتم در بدترین و میانگین حالت n^2 می باشد و در بهترین حالت نیز میتواند پیچدگی nرا نیز داشته باشد. این الگوریتم مناسبی برای مرتب سازی نمی باشد زیرا ما دنبال الگوریتم هایی هستیم که با پیچیدگی زمانی کمتری نیز داشته باشد.
📣👨💻 @AlgorithmDesign_DataStructuer
👍6👨💻2
👨💻5👍3🤔3
👍4👨💻2👎1
clrs کتاب ترجمه شده.pdf
94.8 MB
👍8🙏5👎1👨💻1
Binary Search:
یکی از الگوریتم های برای پیدا کردن عدد درون آرایه می باشد که حتما باید آرایه از پیش مرتب شده باشد که در بالا می توانید این الگوریتم به روش بازگشتی مشاهده کنید که می توان این الگوریتم را بدون استفاده از روش بازگشتی پیاده سازی کرد. که در زیر پیچیدگی زمانی این الگوریتم رو در انواع مختلف ورودی میتوانید مشاهده کنید:
Best case complexity: O(1)
Average case complexity: O(log n)
Worst case complexity: O(log n)
📣👨💻 @AlgorithmDesign_DataStructuer
یکی از الگوریتم های برای پیدا کردن عدد درون آرایه می باشد که حتما باید آرایه از پیش مرتب شده باشد که در بالا می توانید این الگوریتم به روش بازگشتی مشاهده کنید که می توان این الگوریتم را بدون استفاده از روش بازگشتی پیاده سازی کرد. که در زیر پیچیدگی زمانی این الگوریتم رو در انواع مختلف ورودی میتوانید مشاهده کنید:
Best case complexity: O(1)
Average case complexity: O(log n)
Worst case complexity: O(log n)
📣👨💻 @AlgorithmDesign_DataStructuer
👍9👎1👨💻1
Algorithm design & data structure
Binary Search: یکی از الگوریتم های برای پیدا کردن عدد درون آرایه می باشد که حتما باید آرایه از پیش مرتب شده باشد که در بالا می توانید این الگوریتم به روش بازگشتی مشاهده کنید که می توان این الگوریتم را بدون استفاده از روش بازگشتی پیاده سازی کرد. که در زیر…
This media is not supported in your browser
VIEW IN TELEGRAM
👍9👎1👨💻1
MasterTheorem@AlgorithmDesign_DataStructuer.pdf
716.8 KB
قضیه مستر و برخی از توابع بازگشتی که باید با استفاده از درخت حل شوند.
#طراحی_الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
#طراحی_الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👏2🙏2👎1🔥1👨💻1
برنامهنویسی پویا چه ویژگیهای شاخصی دارد؟
یک مسئله باید دارای دو مشخصه کلیدی باشد تا بتوان برنامهنویسی پویا را برای آن استفاده کرد. اول آنکه زیرساختار بهینه و دوم زیرمسئلههای همپوشان داشته باشد. به حل یک مسئله با ترکیب جوابهای بهینه زیرمسئلههای ناهمپوشان، «تقسیم و حل» گفته میشود. به همین علت است که مرتبسازی ادغامی و سریع به عنوان مسائل برنامهنویسی پویا شناختهنمیشوند. نکته مهمی که در ارتباط با برنامهنویسی پویا وجود دارد، اصل بهینگی است. اگر بنا باشد پرانتزبندی کل عبارت بهینه شود، پرانتزبندی زیرمسئلهها هم باید بهینه باشند. یعنی بهینه بودن مسئله، بهینه بودن زیرمسئلهها را ایجاب میکند. پس میتوان از روش برنامهنویسی پویا استفاده کرد. حل بهینه، سومین مرحله از بسط یک الگوریتم برنامهنویسی پویا برای مسائل بهینهسازی است. مراحل بسط چنین الگوریتمی به سه بخش تقسیم میشوند. اول ارائه یک ویژگی بازگشتی که حل بهینه نمونهای از مسئله را به دست میدهد، دوم محاسبه مقدار حل بهینه به شیوه جزء به کل و سوم بنا کردن یک حل نمونه به شیوه جزء به کل.
تمام مسائل بهینهسازی را نمیتوان با برنامهنویسی پویا حل کرد چرا که باید اصل بهینگی در مسئله صدق کند. اصل بهینگی در یک مسئله صدق میکند اگر یک حل بهینه برای نمونه ای از مسئله، همواره حاوی حل بهینه برای همه زیر نمونهها باشد.
📣👨💻 @AlgorithmDesign_DataStructuer
یک مسئله باید دارای دو مشخصه کلیدی باشد تا بتوان برنامهنویسی پویا را برای آن استفاده کرد. اول آنکه زیرساختار بهینه و دوم زیرمسئلههای همپوشان داشته باشد. به حل یک مسئله با ترکیب جوابهای بهینه زیرمسئلههای ناهمپوشان، «تقسیم و حل» گفته میشود. به همین علت است که مرتبسازی ادغامی و سریع به عنوان مسائل برنامهنویسی پویا شناختهنمیشوند. نکته مهمی که در ارتباط با برنامهنویسی پویا وجود دارد، اصل بهینگی است. اگر بنا باشد پرانتزبندی کل عبارت بهینه شود، پرانتزبندی زیرمسئلهها هم باید بهینه باشند. یعنی بهینه بودن مسئله، بهینه بودن زیرمسئلهها را ایجاب میکند. پس میتوان از روش برنامهنویسی پویا استفاده کرد. حل بهینه، سومین مرحله از بسط یک الگوریتم برنامهنویسی پویا برای مسائل بهینهسازی است. مراحل بسط چنین الگوریتمی به سه بخش تقسیم میشوند. اول ارائه یک ویژگی بازگشتی که حل بهینه نمونهای از مسئله را به دست میدهد، دوم محاسبه مقدار حل بهینه به شیوه جزء به کل و سوم بنا کردن یک حل نمونه به شیوه جزء به کل.
تمام مسائل بهینهسازی را نمیتوان با برنامهنویسی پویا حل کرد چرا که باید اصل بهینگی در مسئله صدق کند. اصل بهینگی در یک مسئله صدق میکند اگر یک حل بهینه برای نمونه ای از مسئله، همواره حاوی حل بهینه برای همه زیر نمونهها باشد.
📣👨💻 @AlgorithmDesign_DataStructuer
👍4👎1🔥1👨💻1
چه ساختار داده ای برای اولین پیمایش عمق یک نمودار استفاده می شود؟
Anonymous Quiz
22%
Queue
44%
Stack
24%
List
11%
None of the above
👍4👨💻3👎2
یکی از کاربردهای پشته در کامپیوتر عبارت های حسابی می باشد که در زیر میتونیم با نمادگذاری infix و postfix آشنا شویم.
نماد گذاری infix (میانوندی):
عبارات Infix توسط انسان قابل خواندن و حل هستند. ما به راحتی میتوانیم ترتیب عملگرها را تشخیص دهیم و همچنین میتوانیم از پرانتز برای حل آن قسمت ابتدا در حین حل عبارات ریاضی استفاده کنیم. کامپیوتر نمی تواند عملگرها و پرانتزها را به راحتی متمایز کند، به همین دلیل تبدیل postfix مورد نیاز است.
برای تبدیل عبارت infix به عبارت postfix، از ساختار داده پشته استفاده می کنیم. با اسکن عبارت infix از چپ به راست، زمانی که هر عملوندی را دریافت می کنیم، به سادگی آنها را به فرم پسوند اضافه می کنیم و برای عملگر و پرانتز، آنها را با حفظ اولویت آنها در پشته اضافه می کنیم.
infix:A*B(C+D)
posfix:AB*CD+
📣👨💻 @AlgorithmDesign_DataStructuer
نماد گذاری infix (میانوندی):
عبارات Infix توسط انسان قابل خواندن و حل هستند. ما به راحتی میتوانیم ترتیب عملگرها را تشخیص دهیم و همچنین میتوانیم از پرانتز برای حل آن قسمت ابتدا در حین حل عبارات ریاضی استفاده کنیم. کامپیوتر نمی تواند عملگرها و پرانتزها را به راحتی متمایز کند، به همین دلیل تبدیل postfix مورد نیاز است.
برای تبدیل عبارت infix به عبارت postfix، از ساختار داده پشته استفاده می کنیم. با اسکن عبارت infix از چپ به راست، زمانی که هر عملوندی را دریافت می کنیم، به سادگی آنها را به فرم پسوند اضافه می کنیم و برای عملگر و پرانتز، آنها را با حفظ اولویت آنها در پشته اضافه می کنیم.
infix:A*B(C+D)
posfix:AB*CD+
📣👨💻 @AlgorithmDesign_DataStructuer
👌3👎1👨💻1
زمان لازم برای ادغام دو لیست از پیش مرتب شده به اندازه های m , n چه قدر است؟
Anonymous Quiz
24%
O(m*n)
51%
O(m+n)
13%
O(mlogn)
12%
O(nlogm)
👨💻6🤔3👎2🙏2
آرایه:
در واقعا ما آرایه ها را بای ذخیر سازی دیتا استفاده میکنیم که به بعدی های مختلفی میتوانیم ان را تقسیم کنیم که برای ذخیره کردن دیتا هم باید از حلقه استفاده کنیم تا بتوانیم به اندیس های آرایه دسترسی داشته باشیم و میتونیم دیتا ها رو در آن ها ذخیر کنیم و از آن ها استفاده کنیم. آرایه از سطر(افقی) و ستون(عمودی)تشکیل می شود.
📣👨💻 @AlgorithmDesign_DataStructuer
در واقعا ما آرایه ها را بای ذخیر سازی دیتا استفاده میکنیم که به بعدی های مختلفی میتوانیم ان را تقسیم کنیم که برای ذخیره کردن دیتا هم باید از حلقه استفاده کنیم تا بتوانیم به اندیس های آرایه دسترسی داشته باشیم و میتونیم دیتا ها رو در آن ها ذخیر کنیم و از آن ها استفاده کنیم. آرایه از سطر(افقی) و ستون(عمودی)تشکیل می شود.
📣👨💻 @AlgorithmDesign_DataStructuer
🙏3👨💻2
🤔11