פורסם 2011 באוגוסט 1714 שנים שלום ,לפי מה שלמדתי quick sort היא שיטת מיון היעילה ביותר במקרה הכללי. כמו כן יש את ה insertion sort שממיין בצורה מהירה מאוד מערכים כמעט ממויינים.אני צריך לשלב את ה insertion sort בתוך quick sort החל מנקודה מסוימת, הקבצים שאני צריך למיין כוללים אלפי מילים.אני אשמח אם מישהו יוכל לתת לי כיוון חשיבה או הסבר שיעזור לי להבין באיזה מקום הinsertion sort מייעל את האלגוריתם.תודהנ.ב הקוד בC++void quick_insertion(string* A,int i, int j){ if (j - i > 1) { if (j - i < 10 )/// בחירת הנקודה בה המערך ממוין מספיק { insertion(A,j); } else { int p = partition(A[0],A,i,j); quick_insertion(A,i,p); quick_insertion(A,p,j); } }}
פורסם 2011 באוגוסט 1814 שנים הרעיון ביעול quick sort בעזרת insertion sort הוא הורדת ה Overhead כאשר המערך מספיק קטןכמה זה מספיק קטן זה אתה מחליט,אני ממליץ לך לבצע סוג חיפוש עבור אחוז מסויים מגודל המערך שבו ישתלםלך למיין עם insertion sort תתחיל מ 10 אחוז ותרד,תעשה השוואה על כמה סוגים של רשימות שאתה צריך למייןותיקח את הערך שיתן לך יתרון מבחינת מהירותכמו כן קראתי מזמן שקביעת ה Pivot בצורה רנדומלית יכולה לתת שיפור מסויים
פורסם 2011 באוגוסט 1814 שנים קביעת ה-pivot בצורה אקראית אמורה להקטין את סיבוכיות ה-worst case של האלגוריתם. בקוד הנוכחי, לדוגמה, אם המערך הנתון הוא כבר ממוין לחלוטין, אז הסיבוכיות שלו תהיה (O(n^2 ולא (O(nlogn, ובחירה נכונה של pivot מונעת מצב כזה. הדרך הכי טובה היא שה-pivot יהיה החציון של המערך, וגם את זה ניתן למצוא באמצעות אלגוריתם מתאים.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.