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

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
מ בוט החלפות: דוגמה\1
Addbot (שיחה | תרומות)
מ בוט: מעביר קישורי בינויקי לויקינתונים - d:q830223
שורה 37: שורה 37:
[[קטגוריה:אלגוריתמי מיון|בסיס]]
[[קטגוריה:אלגוריתמי מיון|בסיס]]


[[en:Radix sort]]
[[cs:Radix sort]]
[[de:Radixsort]]
[[es:Ordenamiento Radix]]
[[fa:مرتب‌سازی پایه‌ای]]
[[fi:Kantalukulajittelu]]
[[fr:Tri par base]]
[[hy:Կարգային տեսակավորում]]
[[it:Radix sort]]
[[ja:基数ソート]]
[[ko:기수 정렬]]
[[lt:Skaitmeninis rikiavimo algoritmas]]
[[nl:Radix sort]]
[[no:Sorteringsalgoritme#Radix-sortering]]
[[no:Sorteringsalgoritme#Radix-sortering]]
[[pl:Sortowanie pozycyjne]]
[[pt:Radix sort]]
[[ru:Поразрядная сортировка]]
[[sk:Radix sort]]
[[tr:Basamağa göre sıralama]]
[[uk:Сортування за розрядами]]
[[vi:Sắp xếp theo cơ số]]
[[zh:基数排序]]

גרסה מ־08:48, 27 בפברואר 2013

מיון בסיס (Radix sort) הוא אלגוריתם מיון של מספרים המסתמך על כך שמספר הספרות בייצוג המספרים חסום על ידי קבוע. (למשל: מספר הספרות בייצוג המספר 1234567 הוא 7).

ניתן לממש מיון בסיס כמיון יציב, כלומר מיון ששומר על הסדר הפנימי בין שני ערכים זהים.

מיון הבסיס מתבצע בדרך כלל בזמן ריצה של , כאשר n הוא גודל הקלט ו-k הוא מספר הספרות המקסימלי בכל מספר.

מהלך האלגוריתם

(הדוגמה הבאה מתייחסת למספרים המיוצגים בבסיס 10, כך שכל ספרה קטנה מ-10. ניתן להכליל זאת בקלות לבסיס k כלשהו)

  1. מיון כל המספרים בקבוצה ל־10 קבוצות, על פי ספרת האחדות שלהם.
  2. מיון יציב[דרושה הבהרה] של כל המספרים מהקבוצות שהתקבלו שוב, ל־10 קבוצות, על פי ספרת העשרות של כל מספר, תוך כדי שמירה על סדר המספרים בתוך כל קבוצה, לפי המיון של השלב הקודם.
  3. המשך מיון המספרים על פי הספרה החשובה יותר (מאות, ואז אלפים, ואז עשרות אלפים וכן הלאה), תוך שמירת סדר המספרים בכל קבוצה לפי המיון של השלב הקודם לשלב הנוכחי.

דוגמת הרצה

נתונה קבוצת המספרים הבאה: {0, 1 ,42, 32, 33, 67, 103 ,27, 105, 85} כמות הספרות של כל המספרים חסומה על ידי 3, לכן נמיין 3 פעמים:

  1. על פי ספרת האחדות: {0}, {1}, {42, 32}, {33, 103}, {}, {105, 85}, {}, {67, 27}, {}, {}
  1. על פי ספרת העשרות: {0, 1, 103, 105}, {}, {27}, {32, 33}, {42}, {}, {67}, {}, {85}, {}
  2. על פי ספרת המאות: {0, 1, 27, 32, 33, 42, 67, 85}, {103, 105}, {}, {}, {}, {}, {}, {}, {}, {}

המספרים התקבלו כשהם מסודרים בסדר עולה, על ידי 3 מעברים על כל המספרים.

זמן ריצה

עקרונית, זמן הריצה של האלגוריתם הוא , כאשר n הוא כמות המספרים בקלט, k הוא מספר הספרות המקסימלית בכל מספר ו-d הוא הבסיס בו המספרים נתונים. עם זאת, לרוב המספרים נתונים בבסיס ידוע, כך שלכל בסיס שהוא מתקיים ולכן זמן הריצה יהיה .

אם גודל הקלט, כלומר מספר המספרים שיש למיין, הוא מאותו סדר גודל של מספר הספרות, כלומר , זמן הריצה יהיה [דרושה הבהרה], כאשר זמן הריצה המינימלי למיון מספרים ללא הנחות כלשהן הוא .

חשוב לשים לב שלא בכל המקרים , והדבר תלוי ביחס שבין גודל הקלט למספר הספרות בכל מספר (לדוגמה, שני מספרים בעלי 10 ספרות עשרוניות ימוינו מהר יותר במיון מיזוג מאשר במיון בסיס).

ראו גם