כל מה שאתה צריך לדעת על Quicksort ב- C ++



מאמר זה יספק לך ידע מפורט ומקיף כיצד ליישם את Quicksort ב- C ++ עם דוגמאות.

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

הבנת האלגוריתם המהיר

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





  1. ראשית, נבקש מהמערך את המערך הלא ממוין.

    קוד פיבונאי c ++
  2. ברגע שיש לנו את המערך הלא ממוין שלנו עלינו לבחור ערך ציר מהמערך. אנחנו יכולים לבחור כל ערך.



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

  4. אנו מבצעים שלב 3 עד שנקבל את המערך הממוין שלנו.

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



שלום [5, 4, 1, 11, 9, 6, 2, 3] לדוגמא זו תמיד נתייחס לציר כאלמנט הימני ביותר ברשימה.

מדריכי סטודיו חזותי למתחילים

Quicksort ב- C ++

בואו נעבור כל שלב ונבין את ההיגיון שהשתמשנו בו כדי לפתור את הבעיה.

  • ראשית, בחרנו '3' כציר שלנו וסידרנו את כל האלמנטים פחות מ- '3 בימין ואת כל האלמנטים הגדולים מ-' 3 ימינה.

  • בשלב זה יש לנו 2 בעיות משנה. בואו נפתור תחילה את בעיית המשנה בצד ימין. בחרנו אחד כציר שלנו והצבנו את '2' מימין.

  • כדי לפתור את בעיית המשנה השנייה אנו בוחרים ב'6 'כציר שלנו וממקמים את האלמנטים כפי שדנו קודם.

  • יש לנו עוד 2 בעיות משנה. הראשון נפתר על ידי בחירת 4 כציר, והשני נפתר על ידי בחירת 9 כציר. לבסוף, יש לנו את המערך הממוין שלנו עם האלמנטים הממוקמים באינדקס קו תחתון.

הערה- הנקודה החשובה שיש להבין כאן היא שכל הפעולות מתקיימות באותו מערך. מערכים חדשים לא נוצרים.

Pseudocode עבור Quicksort ב- C ++

QuickSort (מערך [], start_index, end_index) {if (start_index

תוכנית Quicksort ב- C ++

הבנו את האלגוריתם ופיתחנו הבנה מעמיקה לגבי פעולת האלגוריתם. בואו נשתמש ב- Quicksort ב- C ++ ונכתוב תוכנית למיון מערך.

# כלול שימוש ב- namespace std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} מחיצת int (int array [], int start_index, int end_index) {int pivot = מערך [end_index] int i = (start_index - 1) עבור (int j = start_index j<= end_index- 1 j++) { if (array[j] <= pivot) { i++ swap_elements(&array[i], &array[j]) } } swap_elements(&array[i + 1], &array[end_index]) return (i + 1) } void quickSort(int array[], int start_index, int end_index) { if (start_index < end_index) { int partition_index = partition(array, start_index, end_index) quickSort(array, start_index, partition_index - 1) quickSort(array, partition_index + 1, end_index) } } void printArray(int array[], int number) { int i cout<<'Sorted Array: ' for (i = 0 i < number i++) cout << array[i] << ' ' cout << endl } int main() { int Hello[30] int i int NumberofElements cout<>עלות NumberofElements<<'Enter the elements one by one: ' for(i=0i>שלום [i]} quickSort (Hello, 0, NumberofElements-1) printArray (Hello, NumberofElements) להחזיר 0}

תְפוּקָה:

כיצד לסרוק דמות בג'אווה - -

מורכבות זמן

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

  • המקרה הטוב ביותר- עַל)
  • מקרה ממוצע- (nlogn)
  • במקרה הגרוע ביותר- עַל2)

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

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