مقدمه
به نظرم اولین و مهمترین چیزی که باید بفهمیم اینه که اصلا الگوریتم های مرتب سازی چه هستند. بر اساس ویکیپدیا، الگوریتم مرتب سازی، الگوریتمی است که عناصر یک لیست را به ترتیب خاصی در میآورد. کاربردیترین ترتیب ها، ترتیبهای عددی و ترتیبهای وابسه به حروف هستند. بعضی از الگوریتمها (از جمله الگوریتمهای جستجو و ادغام) برای اینکه بدرستی کار کنند، نیازمند لیستهای مرتب شده می باشند؛ مرتبسازی مؤثر و کارآمد، برای بهینه سازی کارائی چنین الگوریتمهایی، مهم هستند. این اگوریتمها، اغلب اوقات، برای به نظم در آوردن دادهها و تولید خروجی قابل خواندن برای انسان، مفید هستند.
من، در این مقاله، برخی از الگوریتمهای مرتبسازی را شرح خواهم داد. همه الگوریتم هایی که در اینجا مورد بحث قرار گرفته اند، در زبان برنامه نویسی #C نوشته شدهاند و بسیاری از ایدهها، بر اساس الگوریتمهایی است که شما میتوانید در ویکیپدیا پیدا کنید.
الگوریتمهایی که در این مقاله با آنها آشنا خواهید شد:
- مرتب سازی حبابی دوطرفه (Bidirectional Bubble Sort)
- مرتب سازی حبابی (Bubble Sort)
- مرتب سازی سطلی (Bucket Sort)
- مرتب سازی شانه ای (Comb Sort)
- مرتب سازی چرخهای (Cycle Sort)
- مرتب سازی گورزاد (Gnome Sort)
- مرتب سازی هرمی (Heap Sort)
- مرتب سازی درجی (Insertion Sort)
- مرتب سازی ادغامی (Merge Sort)
- مرتب سازی زوج-فرد (Odd-Even Sort)
- مرتب سازی لانه کبوتری (Pigeonhole Sort)
- مرتب سازی سریع (Quick Sort)
- مرتب سازی سریع با استفاده از مرتب سازی حبابی (Quick Sort with Bubble Sort)
- مرتب سازی انتخابی (Selection Sort)
- مرتب سازی شل یا پوسته ای (Shell Sort)
قصد دارم طرز کار این الگوریتم ها رو بصورت دیداری به شما نشان بدهم. کاربر می تواند، خروجی این پروژه را بصورت تصاویر متحرک GIF، با سرعت دلخواه، ذخیره کند.