مرتب‌سازی گسترده

در علوم رایانه، مرتب‌سازی گسترده  یک الگوریتم مرتب‌سازی مقایسه‌ای توافقی بر مبنای ساختمان داده‌های درخت اسپلی است.

الگوریتم 
مراحل اجرای الگوریتم عبارت‌اند از:
 مقداردهی اولیه یک درخت اسپلی خالی صورت می‌گیرد؛
 برای هر آیتِم داده در ترتیب ورودی، آن را در درخت اسپلی قرار می‌دهد؛
 پیمایش درخت برای یافتن ترتیب داده انجام می‌شود.
علاوه بر این، الگوریتم با استفاده از درخت اسپلی برای سرعت بخشیدن به هر عمل درج، ممکن است به‌عنوان شکلی از مرتب‌سازی درجی یا مرتب‌سازی درختی هم به‌نظر برسد.

مثال  
به عنوان مثال داده‌هایی با ترتیب زیر را می‌خواهیم مرتب کنیم:

8 4 7 2 3 9 1

 درج داده ها در درخت 
 پیمایش پیش ترتیب (In-Order) درخت  

برای آشنایی بیشتر با روش درج در این درخت به الگوریتم موجود در صفحه‌ی درخت گسنرده مراجعه کنید.

تحلیل زمانی الگوریتم 
طبق تحلیل سرشکن، این مرتب‌سازی در بدترین حالت برای n داده از پیچیدگی زمانی (O (n log n است. که هم‌اندازه با سریع‌ترین الگوریتم‌های مرتب‌سازی مقایسه‌ای غیر توافقی مانند مرتب‌سازی ادغامی و مرتب‌سازی سریع است. برای ورودی‌های خاص با ترتیب به طور مثال تقریبا مرتب یا به طوری که هر عنصر با جدش در حالت مرتب فاصله‌ی کمی دارد، این الگوریتم می‌تواند بهتر از پیچیدگی زمانی (O (n log n عمل کند. این موضوع نشان می‌دهد این مرتب‌سازی یک مرتب سازی توافقی است. طبق قضیه‌ی Dynamic Finger  برای درخت‌های اسپلی زمان اجرای این الگوریتم به شیوه‌ی زیر محاسبه می شود:

اگر xd را فاصله‌ی عنصر x از جدش و xi را برابر با اندازهٔ نابه‌جایی  آن (اختلاف جای x در ورودی و جای 
آن در داده‌ی مرتب‌سازی شده) در نظر بگیریم، کل زمان مرتب‌سازی به  و  محدود می‌شود.

مقایسه با الگوریتم های دیگر 
طبق محاسبات ، در اعداد تصادفی عامل 1.5 تا 2، الگوریتم مرتب‌سازی سریع و در عامل‌های کوچکتر مرتب‌سازی ادغامی سریعتر عمل می‌کنند. برای داده‌های با مقیاس بزرگ‌تر، مرتب‌سازی سریع به دلیل الگوریتم درجا بودن کندتر است و مرتب‌سازی ادغامی و گسترده از نظر زمانی نزدیک به هم عمل می‌کنند. که اگر داده‌ها تقریبا مرتب باشند مرتب‌سازی گسترده بسیار بهتر از الگوریتم‌های دیگر عمل می‌کند.

همچنین  نیز این الگوریتم را با دیگر الگوریتم‌های توافقی که بر اساس شمار کل نابه‌جایی‌ها در اعداد ورودی هستند، مقایسه کردند و به این نتیجه رسیدند که اگر در ورودی به اندازهٔ کافی نابه‌جایی وجود داشته باشد که مرتب‌سازی سریع از الگوریتم‌های توافقی کندتر عمل کند، مرتب سازی گسترده سریع‌ترین الگوریتم است.

پانویس 

 

الگوریتم‌های مرتب‌سازی