מיון סלים – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
←‏חישוב הסיבוכיות: המושג תוחלת לא מאוד רלוונטי בסיבוכיות נראה לי
תגיות: עריכה ממכשיר נייד עריכה דרך האתר הנייד
Avivnaaman (שיחה | תרומות)
המילה תוחלת כן חשובה למקרה זה - משום שנעזרים בהסתברות (בהנחה שהקלו מתפלג באופן אחיד), הסיבוכיות אינה דטרמיניסטית אלא ממוצעת - כלומר, בתוחלת. במקרה דטרמיניסטי שלא מתבסס על הסתברות זמן הריצה ריבועי במקרה הגרוע.
תגיות: עריכה ממכשיר נייד עריכה מיישום נייד עריכה מאפליקציית iOS
שורה 14:
[[מספרים ממשיים|במספרים ממשיים]] למשל, ההחלטה לאיזה סל שייך מספר נקבעת על ידי חישוב יחיד של חילוק הערך שלו בגודל של כל סל, והערך השלם של התוצאה יקבע לאיזה סל להכניסו.
==חישוב הסיבוכיות==
עבור חלוקה של n איברים לתוך m סלים, בהנחה שהפונקציה המחלקת לוקחת <math>\ O(1)</math> לכל איבר אזי פעולת החלוקה לוקחת <math>\ O(N)</math> זמן, במקרה הגרוע, אם פיזור האיברים אינו אחיד, לסל אחד נכנסו <math>\ O(N)</math> איברים ומיונם ייקח <math>\ O(NlogN)</math> והמעבר על שאר הסלים לוקח <math>\ O(M)</math> זמן, וסה"כ לוקח <math>\ O(NlogN+M)</math>, לעומת זאת, בהנחה שאכן הפיזור אחיד, צריך למיין m תאים שבכל אחד מהם <math>\ O(N/M)</math> איברים שלמיין כל אחד מהם לוקח <math>\ O((N/M)log(N/M))</math>,וסה"כ אחרי שמכפילים ב m תאים ומוסיפים את הסיבוכיות של החלוקה לתאים, צריך גם לקחת בחשבון גם מקרה שm הרבה יותר גדולה בסדר גודל מ<math>\ N</math> ולוקח יותר זמן המעבר על התאים ולכן צריך לחבר לסיבוכיות <math>\ M</math>, זה לוקח <math>\ O(Nlog(N/M)+M)</math>, במקרה האידיאלי, שבו <math>\ M</math>= <math>\Theta\left(N\right)</math> וההתפלגות אחידה הסיבוכיות היא בתוחלת<math>\ O(N)</math>.
 
לרוב נעשה שימוש באלגוריתם [[מיון בחירה]] על מנת למיין כל אחד מהסלים כאשר הקלט מתפלג באופן אחיד, משום שמיון זה אופטימלי עבור קלטים קטנים, שמתקבלים במקרה של אחידות ההתפלגות של הקלט.