قدرت هر برنامه نویسی در دانش اوست. بله، توانایی جستجوی خوب نیز در آخرین مکان نیست، اما با این وجود، باید مقدار مشخصی از دانش وجود داشته باشد که بر اساس آن طرز تفکر توسعه دهنده شکل می گیرد. هر چه این دانش عمیق تر باشد، برنامه نویس راه حل های جالب تری می تواند ارائه دهد. یکی از بخشهای چنین «پایهای» ساختارهای داده و الگوریتمها هستند. چگونه می توانید دانش خود را در این راستا گسترش دهید؟ به عنوان یک گزینه، کتابی بیابید که دانش آن به ذخیره نسوز و پایه ای برای مطالعه بیشتر تبدیل شود. برای من، چنین کتابی «ساختارها و الگوریتمهای داده جاوا» نوشته رابرت لافورت بود .
برای چه کسی
مخاطبان این کتاب می توانند طیف بسیار گسترده ای از مردم باشند، زیرا هم برای کسانی که به تازگی به نحو زبان جاوا تسلط دارند و هم برای برنامه نویسان تمرینی، برای درک عمیق تر ویژگی های ساختارهای داده و الگوریتم ها مفید خواهد بود. .در مورد چی
این کتاب به مطالعه و استفاده از ساختارهای داده و الگوریتم ها در برنامه نویسی اختصاص دارد. به خواننده آموزش می دهد که چگونه ساختارهای داده نحوه سازماندهی داده ها در حافظه را تعیین می کنند و چگونه الگوریتم ها عملیات مختلف را روی این ساختارها انجام می دهند. بیایید کمی عمیق تر بگردیم و ببینیم این کتاب دقیقاً در مورد چیست:- آرایه ها عملیات درج، جستجو و حذف در آرایه ها و آرایه های مرتب شده با جزئیات پوشش داده شده است. عملیات جستجوی خطی و باینری برای آرایه های مرتب و نامرتب را نشان می دهد. شما همچنین خواهید آموخت که O-syntax چیست.
- مرتب سازی. سه روش مرتبسازی ساده در نظر گرفته میشود: «مرتبسازی حبابی»، «مرتبسازی انتخابی»، «مرتبسازی درج». از کتاب یاد خواهید گرفت که کدام یک کندترین و کدام یک ساده ترین است.
- پشته ها و صف ها. ساختارهای داده مانند پشته، صف و صف اولویت، اثربخشی و پیاده سازی آنها در جاوا در نظر گرفته شده است.
- لیست های مرتبط این کتاب در مورد لیست های دو طرفه و پیوندی دو طرفه، کارایی آنها و نحوه انجام عملیات درج، جستجو و حذف صحبت می کند. تکرار کننده ها و روش های مورد نیاز آنها نیز پوشش داده شده است.
- بازگشت. بازگشتها در موقعیتهای مختلفی در نظر گرفته میشوند، مانند: محاسبه اعداد مثلثی و فاکتوریل، ساخت آناگرام، انجام جستجوی باینری بازگشتی، حل پازل برج هانوی، اجرای مرتبسازی ادغام، حل مسئله کولهپشتی.
- دسته بندی های غیر پیش پا افتاده روشهای پیشرفتهتری در نظر گرفته میشوند: مرتبسازی پوسته، مرتبسازی سریع و مرتبسازی ریشه، الگوریتمهای آنها، کارایی.
- درختان باینری درختان جستجوی باینری متعادل، نحوه کار، عملیات درج و حذف، انواع مختلف پیمایش، جستجوی حداقل و حداکثر، جستجوی جانشین در نظر گرفته می شوند. کد هافمن نیز پوشش داده خواهد شد.
- درختان قرمز و سیاه. ما یکی از موثرترین انواع درختان متعادل را، چرخش و تغییر رنگ آنها برای تعادل لازم می دانیم.
- درختان 2-3-4. درختهایی از این نوع به عنوان نمونهای از درختان چند مسیری توصیف میشوند؛ عملکرد و ارتباط آنها با درختهای B، که برای ذخیرهسازی دادههای خارجی استفاده میشوند، مورد بحث قرار میگیرند.
- جداول هش هش و روش های مختلف آن از جمله کاوش خطی و درجه دوم، هش دوبل و روش زنجیره ای پوشش داده شده است. همچنین می توانید یاد بگیرید که چگونه می توان از هش برای سازماندهی ذخیره سازی فایل های خارجی استفاده کرد.
- اهرام. این نوع خاصی از درخت است که برای اجرای کارآمد صف های اولویت استفاده می شود. این کتاب مکانیسمهای عملکرد درج، حذف و تنظیم مجدد را مورد بحث قرار میدهد. شما همچنین خواهید آموخت که جایگشت هرمی چیست و چگونه می توان آن را در جاوا پیاده سازی کرد.
- نمودارها نمودارهای وزن دار و بدون وزن، الگوریتم های جستجو از طریق آنها و الگوریتم های مورد استفاده برای یافتن کوتاه ترین مسیرهای پیمایش ارائه شده است.
برنامه های کارگاهی چیست؟
از برنامه های کارگاهی برای نشان دادن این ساختارها و الگوریتم ها استفاده می شود . برنامه ها به عنوان اپلت های جاوا طراحی شده اند که می توانند در مرورگر اجرا شوند. برنامه های کارگاهی نمودارهای گرافیکی ایجاد می کنند که نشان می دهد یک الگوریتم یا ساختار داده چگونه کار می کند. به عنوان مثال، در یکی از برنامههایی که برای نمایش ستونهایی که به ترتیب صعودی مرتب شدهاند طراحی شده است، با هر بار کلیک روی دکمهای روی هیستوگرام، مرحله بعدی انجام میشود. در این حالت، مقادیر متغیرهای درگیر در این الگوریتم نمایش داده میشود تا بتوانید نحوه اجرای کد را مشاهده کنید (تداعیکننده توضیحات یک دیباگر ، درست است؟).نحوه دانلود و نصب Workshop
- می توانید اپلت ها را از اینجا دانلود کنید .
- روی WorkshopApplets.ZIP کلیک کنید و آرشیو را با اپلت ها دانلود کنید.
- برای درک اپلت ها، می توانید این موضوع و نظرات مربوط به آن را بخوانید.
نکات مثبت کتاب
- خواندن بسیار آسان است، نمونه های زیادی تقریباً "روی انگشتان شما" توضیح داده شده است.
- بدون استفاده از فرمول های پیچیده ریاضی، چشمان شما را به روی بسیاری از چیزهای "کلاسیک" باز می کند. خوب، تقریباً بدون آنها :)
- اگرچه نمونه ها در جاوا هستند، اما اقداماتی که در کد انجام می شود با جزئیات کامل توسط متن زیر و نظرات در کد توضیح داده شده است. بنابراین، کاربر هر زبان برنامهنویسی میتواند آن را بخواند، زیرا نمونههای کد بسیار ساده هستند: آنها تقریباً مانند شبه کد میخوانند.
معایب کتاب
- با وجود توضیح "روی انگشتان"، شکاف هایی در آن وجود دارد. برای توضیح مرتبسازی آرایه، نویسنده تصویری از یک تیم فوتبال ترسیم میکند، اما مرتبسازی شل عملاً در آنجا توضیح داده نشده است: من نتوانستم آن را درک کنم و در اینترنت در مورد آن مطالعه کنم.
- ممکن است اشتباهات تایپی، معمولاً در تصاویر یا جداول وجود داشته باشد.
- برخی از کدها کاملا قدیمی هستند.
آنالوگ ها
من آنالوگ های این کتاب یا کسانی که آن را دنبال می کنند (برای کسانی که می خواهند به مطالعه ادامه دهند) توصیه می کنم:- "الگوریتم ها در جاوا" توسط رابرت سدویک.
- "الگوریتم ها: ساخت و تجزیه و تحلیل" نوشته توماس کورمن.
GO TO FULL VERSION