07
مهمرتبسازی درجی (Insertion Sort) یک الگوریتم مرتبسازی ساده و با کارایی بالا برای مجموعه دادههای کوچک و تقریباً مرتب است. این الگوریتم با قرار دادن هر عنصر در مکان مناسب خود در قسمت مرتبشده آرایه، به صورت تدریجی آرایه را مرتب میکند. در این مقاله، به بررسی جامع الگوریتم مرتبسازی درجی، مکانیسم عملکرد، پیچیدگی زمانی و فضایی، مزایا و معایب، کاربردها و نحوه پیادهسازی آن به همراه ارائه نمونه کد خواهیم پرداخت. هدف از این بررسی، ارائه درکی عمیق از این الگوریتم و توانایی استفاده صحیح از آن در موقعیتهای مناسب است.
مرتبسازی دادهها یک وظیفه بنیادی در علوم کامپیوتر است که در زمینههای مختلفی از جمله پایگاههای داده، جستجو و گرافیک کامپیوتری کاربرد دارد. الگوریتمهای مرتبسازی متعددی با ویژگیها و عملکرد متفاوت وجود دارند. الگوریتم مرتبسازی درجی یکی از سادهترین و در عین حال کارآمدترین این الگوریتمها برای مجموعههای داده کوچک و یا دادههایی است که از قبل تقریباً مرتب شدهاند. سادگی و پیادهسازی آسان این الگوریتم، آن را به یک انتخاب مناسب برای آموزش مبانی مرتبسازی و همچنین استفاده در کاربردهایی با محدودیت منابع تبدیل کرده است.
الگوریتم مرتبسازی درجی بر اساس یک رویکرد تدریجی عمل میکند. این الگوریتم آرایه را به دو بخش تقسیم میکند: یک بخش مرتبشده و یک بخش مرتبنشده. در ابتدا، بخش مرتبشده شامل تنها اولین عنصر آرایه است. الگوریتم به صورت تکراری عناصر بخش مرتبنشده را انتخاب کرده و آنها را در مکان مناسب خود در بخش مرتبشده قرار میدهد.
مراحل اصلی الگوریتم مرتبسازی درجی به شرح زیر است:
به عنوان مثال، فرض کنید آرایه [5, 2, 4, 6, 1, 3]
را در اختیار داریم. مراحل مرتبسازی درجی به صورت زیر خواهد بود:
[**5**, 2, 4, 6, 1, 3]
(بخش مرتبشده: [5]
)[**2**, 5, 4, 6, 1, 3]
-> [2, **5**, 4, 6, 1, 3]
(بخش مرتبشده: [2, 5]
)[2, **4**, 5, 6, 1, 3]
-> [2, 4, **5**, 6, 1, 3]
(بخش مرتبشده: [2, 4, 5]
)[2, 4, 5, **6**, 1, 3]
(بخش مرتبشده: [2, 4, 5, 6]
)[2, 4, 5, 6, **1**, 3]
-> [2, 4, 5, 1, 6, 3]
-> [2, 4, 1, 5, 6, 3]
-> [2, 1, 4, 5, 6, 3]
-> [1, 2, 4, 5, 6, 3]
(بخش مرتبشده: [1, 2, 4, 5, 6]
)[1, 2, 4, 5, 6, **3**]
-> [1, 2, 4, 5, 3, 6]
-> [1, 2, 4, 3, 5, 6]
-> [1, 2, 3, 4, 5, 6]
(بخش مرتبشده: [1, 2, 3, 4, 5, 6]
)مزایا:
معایب:
با وجود معایب ذکر شده، الگوریتم مرتبسازی درجی در شرایط خاص کاربردهای مفیدی دارد:
در اینجا یک نمونه پیادهسازی از الگوریتم مرتبسازی درجی در زبان برنامهنویسی پایتون ارائه شده است:
insertion_sort(arr)
یک آرایه به نام arr
را به عنوان ورودی دریافت میکند.for
از اندیس 1 تا انتهای آرایه تکرار میشود.key
مقدار عنصر جاری (عنصر درجشدنی) را در خود نگه میدارد.j
اندیس عنصر قبلی را در بخش مرتبشده نگه میدارد.while
عناصر بخش مرتبشده را با key
مقایسه میکند و در صورت نیاز آنها را به سمت راست جابجا میکند.key
در مکان مناسب خود در بخش مرتبشده قرار میگیرد.الگوریتم مرتبسازی درجی یک الگوریتم مرتبسازی ساده و کارآمد برای مجموعههای داده کوچک و یا دادههای تقریباً مرتب است. با درک مکانیسم عملکرد، پیچیدگی زمانی و فضایی، مزایا و معایب این الگوریتم، میتوان از آن به طور موثر در موقعیتهای مناسب استفاده کرد. در حالی که برای مجموعههای داده بزرگ کارایی پایینی دارد، سادگی و پیادهسازی آسان آن، آن را به یک انتخاب مناسب برای آموزش مبانی مرتبسازی و همچنین استفاده در کاربردهایی با محدودیت منابع تبدیل کرده است. پیادهسازی ارائه شده در این مقاله، به عنوان یک نقطه شروع برای درک و استفاده از این الگوریتم میتواند مفید باشد.
در خبرنامه ما مشترک شوید و آخرین اخبار و به روزرسانی های را در صندوق ورودی خود مستقیماً دریافت کنید.
دیدگاه بگذارید