כיצד ליישם פונקציית מיון ב- C ++?



מאמר זה יעזור לך לחקור את פונקציית המיון ב- c ++ ובתוך כך לתת לך הדגמה מפורטת על הרעיון

מִיוּן היא אחת הפונקציות הבסיסיות והשימושיות ביותר המיושמות על נתונים. היא מכוונת לסדר נתונים בצורה מסוימת, שיכולה להתגבר או לרדת בהתאם לדרישות. קיימת פונקציה מובנית ב- C ++ STL בשם 'מיין ()' המאפשרת לנו לבצע אלגוריתם מיון בקלות. במאמר זה נחקור פונקציית מיון ב- C ++,

המצביעים הבאים יוסקרו במאמר זה:





ממשיך הלאה עם מאמר זה על פונקציית מיון ב- C ++

סוג ( פונקציה)

זוהי פונקציה מובנית של קובץ כותרת האלגוריתם. היא משמשת למיון המכולות כמו מערך, וקטורים בסדר מוגדר. באופן פנימי פונקציה זו מיושמת כמיון מהיר
Quicksort הוא אלגוריתם חלוקה וכיבוש. Quicksort מחלק תחילה רשימה גדולה של אלמנטים לשתי רשימות משנה קטנות יותר: האלמנטים התחתונים והאלמנטים הגבוהים יותר. לאחר מכן, Quicksort ממיין רקורטיבי את רשימות המשנה.



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

Quicksort מהיר יותר בפועל מאשר אלגוריתמי O (n log n) אחרים כגון מיון הכנסה או מיון בועות. ניתן ליישם את Quicksort באמצעות אלגוריתם חלוקה במקום, כלומר ניתן לבצע את המיון כולו עם שטח נוסף בלבד O (log n). Quicksort אינו סוג יציב.
המורכבות שלה היא כדלקמן:
המקרה הטוב ביותר - O (n log n)
המקרה הגרוע ביותר - O (n ^ 2)
מקרה ממוצע - O (n יומן n)

תחביר:
מיין (ראשון, אחרון)
כאן,
ראשית - הוא האינדקס (המצביע) של האלמנט הראשון בטווח שיש למיין.
last - הוא האינדקס (המצביע) של האלמנט האחרון בטווח שיש למיין.
לדוגמא, אנו רוצים למיין אלמנטים של מערך 'arr' ממצב 1 עד 10, נשתמש במיון (arr, arr + 10) והוא ימיין 10 אלמנטים בסדר עולה.
ערך החזרה
אף אחד



מוּרכָּבוּת

הממוצע של מורכבות מיון הוא N * log2 (N), כאשר N = האחרון - הראשון.

טווח נתונים
האובייקט בטווח [הראשון, האחרון) שונה.

חריגים
העומס יתר עם פרמטר תבנית הנקרא כשגיאות דוח ExecutionPolicy כדלקמן:
אם האלגוריתם לא מצליח להקצות זיכרון, std :: bad_alloc נזרק כחריג.
אם ביצוע פונקציה המופעלת כחלק מהאלגוריתם הוא זורק חריג std :: לסיים.

תוכנית סדרת פיבונאטית בג'אווה

ממשיך הלאה עם מאמר זה על פונקציית מיון ב- C ++

דוגמה - למיון נתונים בסדר עולה:

# כלול באמצעות מרחב השמות std int main () {int array [] = {10, 35, 85, 93, 62, 77, 345, 43, 2, 10} int n = sizeof (array) / sizeof (array [0] ) // 'sizeof' נותן את גודל המערך הכולל כלומר גודל של כל תו * no. של תווים // אז כדי לקבל לא. של תווים // אנו מחלקים את גודלof (מערך) עם גודל של כל תו אחד של המערך // הנה זה מערך [0] מין (מערך, מערך + n)<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

פלט:

פלט- פונקציית מיון ב- C ++ - אדוריקה

הֶסבֵּר

מהדוגמה לעיל אנו רואים כי פונקציית sort () כברירת מחדל ממיינת מערך בסדר עולה.

ממשיך הלאה עם מאמר זה על פונקציית מיון ב- C ++

מה ההבדל בין מעמד מופשט וממשק

דוגמה - למיון נתונים בסדר יורד:

כדי למיין את נתוני המערך בסדר יורד עלינו להציג פרמטר שלישי המשמש כדי לציין את סדר מיון האלמנטים. אנו יכולים להשתמש בפונקציה 'גדולה יותר ()' כדי למיין את הנתונים בסדר יורד.

# כלול באמצעות מרחב השמות std int main () {int array [] = {41, 53, 4, 459, 60, 7, 23, 4, 232, 10} int n = sizeof (array) / sizeof (array [0] ) מיין (מערך, מערך + n, גדול יותר ()) cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

תְפוּקָה:

תאריך תפוגה l אומה
הנה הפונקציה sort () עושה השוואה באופן שמציב אלמנט גדול יותר לפני.

ממשיך הלאה עם מאמר זה על פונקציית מיון ב- C ++

חלקי_מבחר

C ++ STL מספק לנו פונקציית מיון חלקית, הפונקציה דומה לפונקציה sort () אך בשונה מפונקציית ה- sort () לא משתמשים בה כדי למיין את כל הטווח אלא משמשים למיון רק חלק משנה שלה. הוא ממיין את האלמנטים בטווח [הראשון, האחרון), באופן שהאלמנטים לפני האלמנט האמצעי ממוינים בסדר עולה, ואילו האלמנטים אחרי האמצע נשארים כמו שהם.

בעזרתו ניתן למצוא את האלמנט הגדול ביותר אם אנו משתמשים באובייקט פונקציה למיון למיקום הראשון

דוגמא

#include #include #include באמצעות מרחב השמות std int main () {vector vec = {10, 45, 60, 78, 23, 21, 30} vector = iterator iptr partial_sort (vec.begin (), vec.begin () + 1, vec.end (), גדול יותר ()) iptr = vec.begin () cout<< 'The largest element is = ' << *iptr return 0 } 

תְפוּקָה:

הֶסבֵּר:
ניתן להשתמש בקוד הנ'ל כדי למצוא את המספר הגדול ביותר בסדרה, כדי למצוא את המספר הקטן ביותר בסדרה אנחנו רק צריכים להסיר את הפקודה הגדולה יותר.

לפיכך הגענו לסוף מאמר זה בנושא 'פונקציית מיון ב- C ++'. אם ברצונך ללמוד עוד, עיין ב- Java Training של Edureka, חברת למידה מקוונת אמינה. אדוריקה הקורס נועד להכשיר אתכם למושגי ליבה וג'אווה מתקדמים יחד עם מסגרות ג'אווה שונות כמו Hibernate & Spring.

יש לך שאלה עבורנו? אנא הזכיר זאת במדור התגובות בבלוג זה ונחזור אליך בהקדם האפשרי.