مرتب سازی سطلی ( به انگلیسی: bucket sort ) ، یا مرتب سازی صندوقی، نوعی الگوریتم مرتب سازی است که با تقسیم کردن یک آرایه به تعدادی سطل کار می کند. سپس هر سطل به طور جداگانه مرتب می شود که این کار مرتب کردن می تواند از یک الگوریتم مرتب سازی دیگر استفاده کرده یا مرتب سازی سطلی را به طور بازگشتی روی آن اجرا کند. مرتب سازی سطلی تعمیم مرتب سازی لانه کبوتری است. از آن جایی که این مرتب سازی، مرتب سازی مقایسه ای نیست، نمی توان ( Ω ( nlog n را به عنوان کران پایین برای آن در نظر گرفت. پیچیدگی محاسباتی برای آن بر اساس تعداد سطل ها محاسبه می شود. ایده اصلی مرتب سازی سطلی این است که بازه ی ( ۱و۰]را به n زیر بازه با اندازهٔ یکسان تقسیم، یا سطل بندی و سپس n عدد ورودی را درون سطل ها پخش کند.
مرتب سازی سطلی به صورت زیر کار می کند:
• آرایه ای به عنوان سطل های خالی تعریف می کند.
• پخش کردن: روی آرایه اصلی حرکت می کند و هر عنصر را در سطلش قرار می دهد. ( شکل ( ۱ ) )
• هر سطل غیر خالی را مرتب می کند. ( شکل ( ۲ ) )
• جمع آوری کردن: به ترتیب سطل ها را نگاه می کند و همه عناصر را به آرایه اصلی بازمی گرداند.
یک راه بهینه سازی مرسوم این است که ابتدا عناصر را در آرایه اصلی قرار داده، سپس مرتب سازی درجی را روی کل آرایه اجرا کند. چون زمان اجرای مرتب سازی درجی به این که هر عنصر از جای نهاییش چقدر فاصله دارد، بستگی داشته، تعداد مقایسه ها نسبتاً کم باقی می ماند و همچنین سلسله مراتب حافظه با مرتب کردن لیست به طور متصل در حافظه، بهتر به کار گرفته می شود. مرسوم ترین نوع مرتب سازی سطلی روی لیستی با طول n عمل می کند که ورودی ها بین صفر و مقدار ماکسیممی مانند M هستند. سپس بازهٔ مقادیر را به n سطل هر کدام با طول M/n تقسیم می کند. اگر هر سطل با استفاده از مرتب سازی درجی مرتب شود، می توان نشان داد که مرتب سازی در زمان مورد خطی مورد انتظار اجرا می شود. ( که میانگین زمان اجرا را روی هر ورودی ممکن می دهد ) با این وجود، کارایی این مرتب سازی، زمانی که عناصر نزدیک به هم قرار می گیرند، تنزل پیدا می کند. در این حالت همه عناصر در یک سطل قرار می گیرند و مرتب سازی به کندی انجام می گیرد.
مرتب سازی سطلی به طور میانگین ( زمانی که داده ها به صورت یکنواخت توزیع شده باشند ) در زمان خطی اجرا می شود. فرض می شود که داده ها با یک فرایند تصادفی که عناصر را به طور یکنواخت روی بازه ( ۰٬۱] توزیع می کند. ایده مرتب سازی سطلی این است که بازه ( ۰٬۱] را به n زیر بازه یا سطل با طول مساوی تقسیم می کند و n عدد ورودی را داخل سطل ها توزیع می کند. از آن جایی که ورودی ها به طور یکنواخت روی ( ۰٬۱] توزیع شده اند، ما انتظار نداریم که اعداد زیادی در یک سطل قرار بگیرند. برای تولید خروجی، اعداد هر داده را ( با استفاده از مرتب سازی درجی ) مرتب کرده و سپس به ترتیب روی سطل ها حرکت کرده و عناصر داخل هر کدام را لیست می کنیم.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفمرتب سازی سطلی به صورت زیر کار می کند:
• آرایه ای به عنوان سطل های خالی تعریف می کند.
• پخش کردن: روی آرایه اصلی حرکت می کند و هر عنصر را در سطلش قرار می دهد. ( شکل ( ۱ ) )
• هر سطل غیر خالی را مرتب می کند. ( شکل ( ۲ ) )
• جمع آوری کردن: به ترتیب سطل ها را نگاه می کند و همه عناصر را به آرایه اصلی بازمی گرداند.
یک راه بهینه سازی مرسوم این است که ابتدا عناصر را در آرایه اصلی قرار داده، سپس مرتب سازی درجی را روی کل آرایه اجرا کند. چون زمان اجرای مرتب سازی درجی به این که هر عنصر از جای نهاییش چقدر فاصله دارد، بستگی داشته، تعداد مقایسه ها نسبتاً کم باقی می ماند و همچنین سلسله مراتب حافظه با مرتب کردن لیست به طور متصل در حافظه، بهتر به کار گرفته می شود. مرسوم ترین نوع مرتب سازی سطلی روی لیستی با طول n عمل می کند که ورودی ها بین صفر و مقدار ماکسیممی مانند M هستند. سپس بازهٔ مقادیر را به n سطل هر کدام با طول M/n تقسیم می کند. اگر هر سطل با استفاده از مرتب سازی درجی مرتب شود، می توان نشان داد که مرتب سازی در زمان مورد خطی مورد انتظار اجرا می شود. ( که میانگین زمان اجرا را روی هر ورودی ممکن می دهد ) با این وجود، کارایی این مرتب سازی، زمانی که عناصر نزدیک به هم قرار می گیرند، تنزل پیدا می کند. در این حالت همه عناصر در یک سطل قرار می گیرند و مرتب سازی به کندی انجام می گیرد.
مرتب سازی سطلی به طور میانگین ( زمانی که داده ها به صورت یکنواخت توزیع شده باشند ) در زمان خطی اجرا می شود. فرض می شود که داده ها با یک فرایند تصادفی که عناصر را به طور یکنواخت روی بازه ( ۰٬۱] توزیع می کند. ایده مرتب سازی سطلی این است که بازه ( ۰٬۱] را به n زیر بازه یا سطل با طول مساوی تقسیم می کند و n عدد ورودی را داخل سطل ها توزیع می کند. از آن جایی که ورودی ها به طور یکنواخت روی ( ۰٬۱] توزیع شده اند، ما انتظار نداریم که اعداد زیادی در یک سطل قرار بگیرند. برای تولید خروجی، اعداد هر داده را ( با استفاده از مرتب سازی درجی ) مرتب کرده و سپس به ترتیب روی سطل ها حرکت کرده و عناصر داخل هر کدام را لیست می کنیم.
wiki: مرتب سازی سطلی