مرتبسازی فلش
مرتبسازی Flash الگوریتم مرتبسازی ای بر اساس توزیع احتمال است که برای دادههای با توزیع یکنواخت، با حافظه نسبتا بیشتر، دارای پیچیدگی زمان اجرای
مفهوم
ایده اصلی مرتبسازی Flash این است که برای مجموعه دادهای که دارای توزیع احتمال یکنواخت است، با داشتن حد بالا و پایین مجموعه، میتوان مکان هر عضو را تخمین زد. برای مثال برای مجموعه ای که کمینه آن ۱ و بیشینه آن ۱۰۰ است و ۵۰ هم عضوی از آن مجموعه است منطقی به نظر میرسد که پس از مرتبسازی، مکان ۵۰ در وسط آرایه مرتب شده باشد. این مکان تخمین زده شده یک کلاس نامیده میشود. اگر اعضای مجموعه را از ۱ تا m شماره گذازی کنیم، کلاس A_i به این صورت محاسبه میشود:
که A مجموعه ورودی است و حاصل عبارت شماره کلاسی است که عضو i ام به آن تعلق دارد. حد بالا و پایین پوشش داده شده برای تمام کلاسها، به غیر از کلاس آخر که شامل بیشینه هاست، یکسان است. این کلاس بندی اطمینان میدهد که هر داده در یک کلاس از دادههای کلاس پایینتر بزرگتر است. این کلاس بندی در واقع یک ترتیب جزئی است که که تعداد وارونگیها را کاهش میدهد. سپس برای هر کلاس مرتبسازی درجی انجام میشود. تا جایی که توزیع احتمال یکنواخت باشد، اندازه کلاسها ثابت میماند و مرتبسازی درجی بهینه خواهد بود.
پیادهسازی با حافظه بهینه
برای بهینه کردن حافظه، الگوریتم از ساختمان دادههای اضافه برای ذخیره کلاسها استفاده نمیکند، بلکه حدود بالا و پایین هر کلاس را در وکتوری ای به نام L ذخیره میکند. حدود بالا از شمارش تعداد اعضای کلاس و کلاسهای قبلش حاصل میشود. از این حدود بالا میتوان به عنوان اشاره گر به کلاسها استفاده کرد. کلاس بندی توسط تعدادی دور انجام میشود، به این صورت که یک سر دور از آرایه ورودی A گرفته میشود و کلاس اش محاسبه میشود. یک عضو سردور معتبر است اگر کلاس بندی نشده باشد. وقتی الگوریتم روی عناصر ورودی حرکت میکند از عناصر کلاس بندی شده پرش میشود و عناصر کلاس بندی نشده برای ساخت دور جدید استفاده میشوند.
سرعت
در حالت ایده آل دادهها به گونهای کلاس بندی میشوند که اندازه کلاسها تقریباً مساوی باشد، از آنجا که هزینه مرتبسازی هر کلاس
در بدترین حالت کلاس بندی به گونهای انجام میشود که تعداد کلاسها زیاد و در هر کلاس تقریباً یک عنصر قرار میگیرد، در این حالت هزینه نهایی برابر هزینه مرحله آخر که قرار دادن کلاسها در کنار هم با مرتبسازی درجی است، میشود. در نتیجه هزینه بدترین حالت
با توجه به فرایند کلاس بندی، مرتبسازی Flash پایدار نیست.
پانویس
- ↑ Neubert, Karl-Dietrich (1998). "The Flashsort Algorithm". Dr. Dobb's Journal: 123. Retrieved 2007-11-06.
{{}}
: Unknown parameter|month=
ignored (help) - ↑ Karl-Dietrich Neubert (1998). "The FlashSort Algorithm". Retrieved 2007-11-06.
- ↑ Li Xiao, Xiaodong Zhang, Stefan A. Kubricht. "Cache-Effective Quicksort". Improving Memory Performance of Sorting Algorithms. Department of Computer Science, College of William and Mary, Williamsburg, VA 23187-8795. Archived from the original on 2 November 2007. Retrieved 2007-11-06.
{{}}
: نگهداری یادکرد:نامهای متعدد:فهرست نویسندگان (link)
پیوند به بیرون
- Sorting in Linear time
- Implementations of Randomized Sorting on Large Parallel Machines (1992)
- Implementation of Parallel Algorithms (1992)
- Visualization of Flashsort