مرتب سازی گسترش یافته

دانشنامه عمومی

مرتب سازی گسترش یافته یک الگوریتم مرتب سازی است که در سال ۲۰۰۲ توسط Steven J. Ross ابداع شد. این الگوریتم، مفاهیمی از مرتب سازی های توزیع شده مانند مرتب سازی مبنایی و سطلی را با مفاهیم مرتب سازی های سریع و ترکیبی تلفیق می کند. در نتایج تجربی، این الگوریتم در اجرا، بسیار کارامد تر از الگوریتم های سنتی مانند مرتب سازی سریع به ویژه در ارائه ساختارهای توزیع شده نشان داده شده است. مرتب سازی سریع یک عنصر محوری را درلیست شناسایی می کند و لیست را به دو زیر لیست تقسیم می کند:عناصر بزرگتر از عنصر محوری وعناصر کوچکتر ازعنصر محوری. مرتب سازی گسترش یافته این ایده را به صورت تقسیم بندی لیست به n/cپارتیشن در هر گام تعمیم می دهد، که nتعداد عناصر لیست وc ثابت کوچک است ( در عمل در مقایسه های کند، معمولاً بین ۴ تا ۸ است؛ ولی در مقایسه های سریع c مقدار بزرگتری است ) . این الگوریتم برای اجرا از تکنیک های توزیع شده استفاده می کند. ابتدا بزرگترین و کوچکترین مقادیر را وارد لیست می کند سپس ناحیه بین این دو را به n/c ظرف بااندازه مساوی تقسیم می کند. در مواقعی که ذخیره سازی یک مسئله مهم است، این الگوریتم می تواند در هر مرحله از تقسیم بازگشتی به داشتن بزرگترین ظرف کمک کند و باعث می شود این روند تقسیم چندین مرحله داشته باشد، اگرچه این کار باعث تکراربیشتر می شود ولی خطاهای ذخیره سازی را کاهش می دهد و باعث می شود که الگوریتم سریع تر اجرا شود. درمواردی که تعداد ظرف ها حداقل برابر تعداد عناصر است، مرتب سازی گسترش یافته به مرتب سازی سطلی تخریب می شود و مرتب سازی به اتمام می رسد. در غیر این صورت هرظرف به صورت بازگشتی مرتب می شود.
الگوریتم از آزمون های اکتشافی برای تعیین اینکه ایا هر ظرف می تواند توسط این الگوریتم یا الگوریتم های دیگر، به طور کارامدتری مرتب شود، استفاده می کند. سپس به صورت بازگشتی ظرف ها را مرتب می کند.
این الگوریتم نیز مانند الگوریتم های توزیع شده دیگر نقطه ضعفی دارد و آن این است که برنامه نویس به ابزاری برای تبدیل هرعنصربه یک کلید عددی نیاز دارد و هدف آن شناسایی این است که هرکدام ازعناصر در کدام ظرف می افتند. اگرچه برای عناصر با طول متغیر مانند رشته ها ( با توجه به اینکه هر عدد باتعداد بی نهایتی از مقادیر مینیمم دنبال می شود و برای هرنوع داده ای دارای یک ارایش کلی می باشد ) این عملیات برای پیاده سازی صحیح بسیار سخت تر از یک تابع مقایسه ای ساده به ویژه در ساختارهای پیچیده است. پیاده سازی ضعیف این تابع مقداری می تواند منجر به کلاستربندی شود که به کارایی الگوریتم آسیب می رساند.
عکس مرتب سازی گسترش یافته
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلف

پیشنهاد کاربران

بپرس