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

الگوریتم
--------

مراحل اجرای الگوریتم عبارت‌اند از:

1. مقداردهی اولیه یک درخت اسپلی خالی صورت می‌گیرد؛
2. برای هر آیتِم داده در ترتیب ورودی، آن را در درخت اسپلی قرار می‌دهد؛
3. پیمایش درخت برای یافتن ترتیب داده انجام می‌شود.

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

مثال
----

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

```
8 4 7 2 3 9 1

```

1. درج داده ها در درخت وارد کردن داده در درخت گسترده
2. پیمایش پیش ترتیب (In-Order) درخت پیمایش میان‌ترتیب درخت ساخته‌شده

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

تحلیل زمانی الگوریتم
--------------------

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

اگر *x**d* را فاصله‌ی عنصر x از جدش و *x**i* را برابر با اندازهٔ نابه‌جایی آن (اختلاف جای x در ورودی و جای 
آن در داده‌ی مرتب‌سازی شده) در نظر بگیریم، کل زمان مرتب‌سازی به {\displaystyle \sum \_{x}\log d\_{x}} و {\displaystyle \sum \_{x}\log i\_{x}} محدود می‌شود.

مقایسه با الگوریتم های دیگر
---------------------------

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

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

پانویس
------

1. 1 2  Moffat, Alistair; Eddy, Gary; Petersson, Ola (July 1996), "Splaysort: Fast, Versatile, Practical", *Software Practice and Experience*, **26** (7): 781–797, doi:10.1002/(SICI)1097-024X(199607)26:7<781::AID-SPE35>3.3.CO;2-2
2. ↑  Cole, Richard (2000), "On the dynamic finger conjecture for splay trees. II. The proof", *SIAM Journal on Computing*, **30** (1): 44–85, doi:10.1137/S009753979732699X, MR 1762706.
3. ↑  Elmasry, Amr; Hammad, Abdelrahman (2005), "An empirical study for inversions-sensitive sorting algorithms", *Experimental and Efficient Algorithms: 4th International Workshop, WEA 2005, Santorini Island, Greece, May 10-13, 2005, Proceedings*, Lecture Notes in Computer Science, vol. 3503, Springer, pp. 597–601, doi:10.1007/11427186\_52.

* مشارکت‌کنندگان ویکی‌پدیا. «Splaysort». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۱۳ اسفند ۱۳۹۲.

| * ن
* ب
* و
الگوریتم‌های مرتب‌سازی |
| --- |
| تئوری | 
* نظریه پیچیدگی محاسباتی
* نمادهای O و Ω و Θ
* ترتیب کامل
* الگوریتم مرتب‌سازی
* شبکه مرتب‌سازی
* مرتب‌سازی مقایسه‌ای

 |  |
| گونه‌های تعویضی | 
* حبابی
* دست‌نشانده
* زوج و فرد
* ساختگی
* سریع
* شانه‌ای
* کوکتلی
* گورزاد

 |
| گونه‌های انتخابی | 
* انتخابی
* دایره‌ای
* درخت دکارتی
* روان
* مسابقه‌ای
* هرمی

 |
| گونه‌های درجی | 
* درجی
* درختی
* شکیبانه
* صدفی
* کتابخانه‌ای
* گسترده

 |
| گونه‌های ادغامی | 
* ادغامی آبشاری
* ادغامی چندمرحله‌ای
* ادغامی نوسانی
* ادغامی
* رشته‌ای

 |
| گونه‌های توزیعی | 
* انفجاری
* پایه‌ای
* پرچم آمریکا
* مجاور-نگاشت (پروکس‌مپ)
* سطلی
* شمارشی
* فلش
* لانه‌کبوتری
* مهره‌ای

 |
| گونه‌های همرو | 
* ادغامی دسته‌ای فرد-زوج
* بایتونیک
* جفتی

 |
| گونه‌های دوگانه | 
* آن‌شافل
* تیم
* جی‌سورت
* درونگرا
* گسترش‌یافته

 |
| گونه‌های دیگر | 
* اسپاگتی
* توپولوژیکی
* کلوچه‌ای

 |

|  |  |
| --- | --- |
| آیکون خرد | این یک مقالهٔ خرد علوم رایانه است. می‌توانید با گسترش آن به ویکی‌پدیا کمک کنید. |