Data Structures and Algorithm Analysis in C++ 3rd Edition
ما ساختمانهای داده را مطالعه میکنیم تا بتوانیم یاد بگیریم که برنامههای کارآمدتری بنویسیم. ولی چرا با این که هر ساله کامپیوترهای جدید سریعتر میشوند برنامهها باید کارآمد باشند؟ دلیلش این است که جاه طلبیها ما نیز به همراه تواناییهای ما رشد میکنند. به جای اینکه ارائه راندمان بالا منسوخ شود، انقلاب مدرن در توان محاسباتی و قابلیتهای ذخیره سازی صرفا بهره وری را افزایش میدهند همان طور که ما تلاش به انجام کارهای پیچیدهتر میکنیم.
برای افزایش راندمان برنامه نیازی نیست و نباید با طراحی صحیح و کدنویسی واضح تداخلی داشته باشد. نوشتن برنامه هایی با راندمان بالا سر و کار کمی با با ترفندهای برنامه نویسی دارد اما نسبتا بر اساس سازمان دهی مناسب اطلاعات و الگوریتم هاست. برنامه نویسی که بر روی اصول پایه ای طراحی واضح تسلط پیدا نکرده است، به احتمال زیاد قادر به نوشتن برنامه هایی با راندمان بالا نیست. بر عکس نگرانیهای مربوط به هزینههای توسعه و نگهداری نباید به عنوان بهانه ای برای توجیه کارایی پایین برنامه باشد. عمومیت طراحی باید بدون فدا کردن کارایی قابل دستیابی باشد، ولی این تنها در صورتی امکان پذیر است که طراح بداند که کارایی را چگونه اندازه بگیرد و آن را به عنوان جزئی جدا نشدنی از فرآیند طراحی و پیاده سازی کند. بیشتربرنامههای درسی علوم کامپیوتر تصدیق کرده اند که مهارتهای خوب برنامه نویسی با تاکید زیادی بر اصول بنیادین مهندسی نرم افزار آغاز میشود. پس از آن وقتی که یک برنامه نویس اصول طراحی روشن و پیاده سازی برنامه را یاد گرفت، قدم بعدیش مطالعه تاثیر سازمان دهی داده و الگوریتمها بر روی راندمان برنامه است.
کتاب تحلیل ساختمانهای داده و الگوریتمها در سی پلاس پلاس؛ راهنمایی جامع با تمرکز بر روی ایجاد ساختمانهای داده و الگوریتمهای با راندمان بالا است. این کتاب چگونگی انتخاب و یا طراحی مناسبترین ساختمان داده برای یک مسئله را بیان کرده است. در این کتاب از ++C به عنوان زبان برنامه نویسی استفاده شده است.
Table of Contents
PART I: Preliminaries
1: Data Structures and Algorithms
2: Mathematical Preliminaries
3:Algorithm Analysis
PART II: Fundamental Data Structures
4: Lists, Stacks, and Queues
5: Binary Trees
6: Non-Binary Trees
PART III: Sorting and Searching
7: Internal Sorting
8: File Processing and ExternalSorting
9: Searching
10: Indexing
PART IV: Advanced Data Structures
11: Graphs
12: Lists and Arrays Revisited
13: Advanced Tree Structures
PART V: Theory of Algorithms
14: Analysis Techniques
15: Lower Bounds
16: Patterns of Algorithms
17: Limits to Computation
PART VI: APPENDIX
AUtility Functions
Bibliography
Index