Bucket sort اكرم منوچهري زهرا منوچهري

Slides:



Advertisements
Similar presentations
Awe sim.
Advertisements

معاونت درمان امور مامایی اردیبهشت 90. برای ثبت اطلاعات در برنامه نرم افزاری نظام مراقبت مرگ پریناتال ابتدا لازم است برنامه نرم افزار info-path وپرنیان.
الگوریتم ژنتیکی. تعریف  الگوریتم ژنتیکی، رویه ای تکراری است که راه حل های انتخابیش را بصورت رشته ای از ژنها که کروموزوم نامیده می شوند، بازنمایی می کند.
Definition. قانون بیز P(b|a) = P(a|b)P(b)/P(a) P(b|a) = P(a|b)P(b)/P(a) این قانون برای استنتاج آماری استفاده می شود. این قانون برای استنتاج آماری استفاده.
Decision Tree.
Ali Karimpour Associate Professor Ferdowsi University of Mashhad ADVANCED CONTROL Reference: Chi-Tsong Chen, “Linear System Theory and Design”, 1999.
مراحل مختلف اجرای يک برنامه
فایل پردازی در C File based Programming in C. انواع فایل متنی –سرعت بالا –حجم کمتر –امکان دسترسی تصادفی –حفظ امنیت داده ها دودویی (باینری) –امکان باز.
1 بنام خدا زبان برنامه نویسی C (21814( Lecture 14 Structures.
به نام خدا برنامه سازی سمت سرور (php)
موضوع: دبير مربوطه: آموزشگاه : اجرا : عبارتهای جبری خانم مقصودی
Normal Distribution بسم الله الرحمن الرحیم اردیبهشت 1390.
مظفر بگ محمدی دانشگاه ایلام Generics. کدهای عمومی 2 یکی از اهداف OOP ایجاد قابلیت نوشتن برنامه های عمومی با قابلیت استفاده ی مجدد است. کدهای چندریخت تا.
Data Types Modifiers Base data type Size Sign signed int 2 B unsigned float 4 B short double 8 B long char 1 B.
Arrangements of Lines C omputational Geometry By Samaneh shafi naderi
پیاده سازی کنترلر PC/104. Contents PC/104 پیاده سازی کنترلر HILتست 1.
آشنايي با سيستم اعداد.
[c.
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
تمرین هفتم بسم الله الرحمن الرحیم درس یادگیری ماشین محمدعلی کیوان راد
هیدروگراف(Hydrograph) تهیه : دکتر محمد مهدی احمدی
ویژگی های DHCP جلوگیری از Conflict سرعت بخشیدن به کارها مدیریت متمرکز
NAT Configuration For ZyXEL ADSL Wireless Router
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
SY800 router mode [AD-14-TB ].
NAT Configuration For ZyXEL ADSL Router
ساختمان داده ها جداول درهم سازی
ساختمان داده‌ها الگوریتمهای کوتاهترین مسیر
روش حریصانه در طراحی الگوریتم
Odd-even merge sort مرتب سازی.
چگونه بفهمیم آیا ژورنالی ISI است؟ ایمپکت فاکتور دارد یا خیر؟
مدیریت مالی و اقتصاد مدیریت موضوع : نقطه سر به سر زمستان 93
فصل دوم جبر بول.
بلند ترين زير دنباله مشترك Longest common subsequence (LCS)
مقدمه اي بر مهندسي نيازمنديها
SSO Single Sign-on Systems
خودآموز آسان ویکی‌پدیای فارسی
آموزش کرک کردن نرم افزار ACTIVE HDL
Tree Sort.
کوئیز از جلسه قبل) کارخانه ای در حال خرید قطعه‌ای برای یکی از ماشین‌آلات خود می باشد اگر نرخ بهره 10% برای محاسبات فرض شود، دو مدل از قطعه ماشین در دسترس.
مدارهای منطقی فصل سوم - خصوصیات توابع سويیچی
ساختمان داده‌ها پیمایش درخت دودویی
Encyclopedia Britannica
سميرا قانوني زهرا معدني
Banks, Carson, Nelson & Nicol Discrete-Event System Simulation
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
Ali Karimpour Associate Professor Ferdowsi University of Mashhad
کار برد شبکه های عصبی در پردازش سریهای زمانی
مقاله ام را کجا Submit کنم؟ تهیه و تنظیم: سودابه طاهری و زهره راخ
راهنمای استفاده از ابزار Mailings در Ms Word
اهداف درس این جلسه حل مساله کوله پشتی با رویکرد حریصانه مقایسه رویکرد حریصانه با برنامه‌نویسی پویا در حل مساله.
پشته و صف پیوندی Give qualifications of instructors: DAP
بسم الله الرحمن الرحیم هرس درخت تصمیم Dr.vahidipour Zahra bayat
کاربرد کامپیوتر در داروخانه
جستجوی منابع الکترونیک
به نام خدا Koha برنامه.
IN THE NAME OF GOD MATH SABA KARBALAEI
فصل ششم مدارهای ترتیبی.
ساختمان داده‌ها درختان و درختان دودویی
توزیع میانگین نمونه سعید موسوی.
مراحل پیش رو : 1- الگوریتم عقبگرد برای مسئله کوله پشتی صفر و یک
نسبت جرم فرمولی ”جرم اتمی و فرمول تجربی
برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 7
kbkjlj/m/lkiubljj'pl;
ساختمان داده ها مرتب سازی درجی
پشته و صف پیوندی Give qualifications of instructors: DAP
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
ساختمان داده ها گرافها.
Presentation transcript:

Bucket sort اكرم منوچهري زهرا منوچهري به نام خالق هستي بخش Bucket sort اكرم منوچهري زهرا منوچهري

مرتب‌سازی سطلی مرتب سازی سطلی یا مرتب سازی صندوقی ، نوعی الگوريتم مرتب سازي است که با تقسیم کردن یک آرایه به تعدادی سطل کار می‌کند. سپس هر سطل به طور جداگانه مرتب می‌شود که این کار مرتب کردن می‌تواند از یک الگوریتم مرتب سازی دیگر استفاده کرده یا مرتب سازی سطلی را به طور بازگشتی روی آن اجرا کند. مرتب سازی سطلی تعمیم مرتب سازي لانه كبوتري است. از آن جایی که این مرتب سازی ، مرتب سازي مقايسه اي نیست ،(Ω(nlog n به عنوان حد پایین برای آن غیر قابل اجرا می‌باشد. پيچيدگي محاسباتي برای آن بر اساس تعداد سطل ها محاسبه می‌شود.

نحوه عملکرد مرتب سازی سطلی به صورت زیر کار می‌کند: آرایه‌ای به عنوان سطل های خالی تعریف می‌کند. پخش کردن : روی آرایه اصلی حرکت می‌کند و هر عنصر را در سطلش قرار می‌دهد.

هر سطل غیر خالی را مرتب می‌کند. جمع آوری کردن : به ترتیب سطل ها را نگاه می‌کند و همه عناصر را به آرایه اصلی باز می گرداند.

مرسوم ترین نوع مرتب سازی سطلی روی لیستی با طول n عمل می‌کند که ورودی ها بین صفر و مقداری ماکسیممی مانند M هستند . سپس بازهٔ مقادیر را به n سطل هر کدام با طول M/n تقسیم می‌کند. اگر هر سطل با استفاده از مرتب سازی درجی مرتب شود ، می‌توان نشان داد که مرتب سازی در زمان مورد خطی مورد انتظار اجرا می‌شود.( که میانگین زمان اجرا را روی هر ورودی ممکن می‌دهد.) با این وجود ، کارآیی این مرتب سازی ، زمانی که عناصر نزدیک به هم قرار می‌گیرند ، تنزل پیدا می‌کند. در این حالت همه عناصر در یک سطل قرار می‌گیرند و مرتب سازی به کندی انجام می‌گیرد.

الگوریتم مرتب سازی سطلی به طور میانگین (زمانی که داده‌ها به صورت یکنواخت توزیع شده باشند.) در زمان خطی اجرا می‌شود. فرض می‌شود که داده‌ها با یک فر آیند تصادفی که عناصر را به طور یکنواخت روی بازه ]0,1] توزیع می‌کند. ایده مرتب سازی سطلی این است که بازه ]0,1] را به n زیر بازه یا سطل با طول مساوی تقسیم می‌کند و n عدد ورودی را داخل سطل ها توزیع می‌کند. از آن جایی که ورودی ها به طور یکنواخت روی ]0,1] توزیع شده اند ، ما انتظار نداریم که اعداد زیادی در یک سطل قرار بگیرند. برای تولید خروجی ، اعداد هر داده را (با استفاده از مرتب سازی درجی) مرتب کرده و سپس به ترتیب روی سطل ها حرکت کرده و عناصر داخل هر کدام را لیست می کنیم.

BUCKET_SORT (A) n ← length [A] For i = 1 to n do Insert A[i] into list B[nA[i]] For i = 0 to n-1 do Sort list B with Insertion sort Concatenate the lists B[0], B[1], . . B[n-1] together in order.

کد ما برای مرتب سازی سطلی فرض می‌کند که ورودی در آرایه n عنصری A قرار دارد و هر عنصر A بین 0 و 1 است. همچنین ما به یک آرایه کمکی[B[0 . . n -1 برای لیست های پیوندی مربوط به سطل ها نیاز داریم. برای آن که ببینیم این الگوریتم کار می‌کند ، دو عنصر [A[i و [A[j را در نظر بگیرید. بدون از دست دادن کلیت مسئله فرض کنید که [A[i]≤ A[j.عنصر [A[i می‌تواند در سطلی همانند [A[j قرار بگیرد یا به سطلی با اندیس کوچکتر برود. اگر [A[iو [A[j در سطلی یکسان قرار گیرند ، حلقه for دوم آن ها را در ترتیب درست قرار می‌دهد. اگر [A[i و [A[j در سطل های متفاوت باشند ، آنگاه خط آخر کد ، آن ها را در جای درست می گذارد.بنا براین ، مرتب سازی سطلی درست کار می‌کند.

مثالی از نحوه مرتب سازی آرایه [A[1..10 داده شده است. آرایه [B[0..9 آرایه‌ای از لیست های مرتب شده یا سطل ها پس از خط پنجم کد است. سطل i مقادیری در بازه [i/10, (i +1)/10] را نگاه داشته است. خروجی مرتب شده شامل یک الحاق به ترتیب لیست ها است که در ابتدا [B[0 بعد [B[1] بعد [B[2 و ...... در انتها[B[9 می‌آیند. زمان اجرای این مرتب سازی این گونه بدست می‌آید: زمان وارد کردن n عنصر در آرایه A + زمان حرکت روی آرایه کمکی B ( مرتب شده با مرتب سازی درجی) که زمان این برابر می‌شود با : (O(n) + n . O(2 - 1/n) = O(n .بنابراین مرتب سازی سطلی در زمان خطی اجرا می‌شود.

پیاده سازی الگوریتم در ++C #include <iostream> using namespace std; void bucketSort(int a[],int n, int max) { int* buckets = new int[max]; int SIZE = n; for(int j = 0 ; j <= max ; j++) buckets[j] = 0; for(int i = 0 ; i < SIZE ; i++) ++buckets[a[i]]; for(int i = 0 , j = 0 ; j <= max ; ++j) for(int k = buckets[j] ; k > 0 ; k--) a[i++] = j; cout << a[i] << " "; cout << "\n"; }

int main() { int a[] = {25,54,73,11,83,52,23,91}; int elem = sizeof(a)/sizeof(int); int max = a[0]; for(int i = 0 ; i < elem ; i++) if(a[i] > max) max = a[i]; bucketSort(a, elem, max); system("pause>nul"); }

منابع fa.wikipedia.org