מפתח תשובות · יחידה 4
אלגוריתמים ויעילות.
שאלות התרגול של כל שיעור, התשובות הנכונות שלהן והטעויות שהן מזהות. תשובות שנקראות מהסצנה משתמשות באותה הגדרה שהלומדים רואים.
מפתח תשובות 4
שיעור 1 מתוך 4 · כ־25 דקות
הצעדים של אלגוריתם
מה זה אלגוריתם, דרך שיטה אחת למיין: מיון בועות משווה שכנים ומחליף אותם, מעבר אחר מעבר. סופרים השוואות והחלפות, ורואים איך השורה שמתחילים ממנה משנה את העבודה.
6 השלבים והתשובות שלהם
תרגול · בחרו
השאלה
מה הופך רשימת הוראות לאלגוריתם?
התשובה הנכונה
נכונה הצעדים מדויקים, אין בהם ניחוש, והם תמיד מסתיימים בתשובה
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועות
- גודל הרשימה
- 8 בלוקים
- סדר התחלתי
- מעורבב
- הצגת קצב הגדילה
- בלוקים
האפשרויות
מוצגות בסדר אקראי.
נכונה הצעדים מדויקים, אין בהם ניחוש, והם תמיד מסתיימים בתשובה
שגויה הם כתובים בשפת תכנות
משוב מהקטלוג
אלגוריתם הוא השיטה, לא הקוד. מתכון לעוגה, תרגיל חילוק ארוך במחברת ומיון בועות הם אלגוריתמים, כי כל אחד מהם הוא רשימה סופית של צעדים מדויקים שתמיד מגיעה לתשובה. תוכנית היא אלגוריתם שכתבו בשפה שמחשב מבין; אותו אלגוריתם אפשר לכתוב בכל שפה, או לבצע ביד.
שגויה הם מגיעים לתשובה מהר
משוב
יש אלגוריתמים איטיים מאוד, ובשביל זה בדיוק משווים ביניהם. מהירות היא תכונה של אלגוריתם, לא התנאי להיות אלגוריתם.
שגויה הם נותנים תשובה נכונה ברוב הפעמים
משוב
אלגוריתם צריך לעבוד תמיד, על כל קלט מהסוג שהוא מקבל. שיטה שעובדת “בדרך כלל” היא כלל אצבע.
משוב לתשובה נכונה
אלגוריתם הוא רשימה סופית של צעדים מדויקים, כאלה שכל אחד, אדם או מכונה, יכול לבצע בלי לחשוב, ושתמיד מסתיימת בתשובה הנכונה. מיון בועות הוא כזה: “השוו שני שכנים; אם השמאלי גבוה יותר, החליפו; עברו לזוג הבא.”
פתרון מלא
- מדויק: בכל צעד ברור מה לעשות, בלי שיקול דעת.
- סופי: הצעדים נגמרים.
- נכון: על כל קלט התשובה נכונה.
שפת תכנות היא רק דרך אחת לכתוב אלגוריתם; את מיון הבועות אפשר לבצע ביד, עם בלוקים אמיתיים.
תרגול · חשבו
השאלה
בשורה יש 8 בלוקים. במעבר הראשון של מיון בועות משווים כל בלוק עם השכן שמימינו, משמאל לימין. כמה השוואות יש במעבר הזה?
התשובה הנכונה
7 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 8 בלוקים
- סדר התחלתי
- מעורבב
- הצגת קצב הגדילה
- בלוקים
- מתקבלת בטווח
- ± 0.01
- ערך קבוע בשאלה
משוב לתשובה נכונה
שבע: בין שמונה בלוקים יש שבעה זוגות של שכנים, כמו שבין שמונה עמודים בגדר יש שבעה מרווחים.
רמז
כמה זוגות של שכנים יש בשורה של שמונה?
פתרון מלא
- הזוגות: בלוקים 1 ו־2, 2 ו־3, וכן הלאה עד 7 ו־8.
- לבלוק האחרון אין שכן מימין.
- לכן יש השוואות.
אם עניתם , ספרתם השוואה לכל בלוק; ההשוואה היא בין זוג.
תרגול · בחרו
השאלה
מיון בועות סיים את המעבר הראשון שלו. מה בטוח נכון עכשיו?
התשובה הנכונה
נכונה הבלוק הגבוה ביותר עומד בקצה הימני
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 8 בלוקים
- סדר התחלתי
- מעורבב
- הצגת קצב הגדילה
- בלוקים
האפשרויות
מוצגות בסדר אקראי.
נכונה הבלוק הגבוה ביותר עומד בקצה הימני
שגויה כל השורה ממוינת
טעות נפוצה: Thinks a single pass of bubble sort along the row leaves it sorted.
משוב מהקטלוג
מעבר אחד של מיון בועות מבטיח רק דבר אחד: הבלוק הגבוה ביותר נסחף עד הקצה הימני. שאר הבלוקים זזים לכל היותר מקום אחד שמאלה. לכן צריך עוד מעבר, ועוד אחד, וכל מעבר נעצר מקום אחד לפני הקודם. בשורה הפוכה של שמונה בלוקים יש שבעה מעברים: השוואות.
שגויה הבלוק הנמוך ביותר עומד בקצה השמאלי
משוב
הבלוק הנמוך זז לכל היותר מקום אחד שמאלה בכל מעבר: הוא מנצח רק בהשוואה אחת, עם השכן שמשמאלו.
משוב לתשובה נכונה
ברגע שהבלוק הגבוה ביותר נכנס להשוואה, הוא מנצח בכל השוואה שאחריה ומוחלף ימינה שוב ושוב, עד הקצה. לכן המעבר הבא יכול לעצור מקום אחד קודם.
פתרון מלא
- במעבר משווים שכנים משמאל לימין, ומחליפים כשהשמאלי גבוה יותר.
- הבלוק הגבוה ביותר גבוה מכל שכן, ולכן מרגע שהגיע אליו התור הוא ממשיך ימינה בכל השוואה.
- בסוף המעבר הוא בקצה הימני. על שאר הבלוקים המעבר לא מבטיח כלום.
בשורה הפוכה צריך שבעה מעברים כאלה עד שהכול ממוין.
תרגול · חשבו
השאלה
אלגוריתם הוא מיון בועות, גודל הרשימה 8 וסדר התחלתי הפוך: הבלוק הגבוה ביותר ראשון. כמה השוואות יעשה המיון כולו?
התשובה הנכונה
28 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 8 בלוקיםקבוע
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- בלוקים
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisons
תשובות שגויות שהשאלה מזהה
64 ± 0.01
טעות נפוצה: Counts n × n comparisons for comparing every pair, counting each pair twice and a block against itself.
משוב מהקטלוג
כדי להשוות כל זוג פעם אחת, כל בלוק נפגש עם כל אחד מ־ האחרים, וזה , אבל כך כל זוג נספר פעמיים, פעם מכל צד. לכן מספר הזוגות הוא : לשמונה בלוקים , לא . זה בסדר גודל של , אבל לא עצמו.
7 ± 0.01
טעות נפוצה: Thinks a single pass of bubble sort along the row leaves it sorted.
משוב מהקטלוג
מעבר אחד של מיון בועות מבטיח רק דבר אחד: הבלוק הגבוה ביותר נסחף עד הקצה הימני. שאר הבלוקים זזים לכל היותר מקום אחד שמאלה. לכן צריך עוד מעבר, ועוד אחד, וכל מעבר נעצר מקום אחד לפני הקודם. בשורה הפוכה של שמונה בלוקים יש שבעה מעברים: השוואות.
משוב לתשובה נכונה
. בשורה הפוכה כל מעבר מוצא מה להחליף, ולכן המיון לא עוצר מוקדם: שבעה מעברים, וכל אחד קצר באחד מהקודם.
רמז
כמה השוואות יש בכל מעבר, וכמה מעברים?
פתרון מלא
- המעבר הראשון: השוואות, והגבוה ביותר מגיע לקצה.
- כל מעבר נוסף נעצר מקום אחד קודם: , , …, .
- הסכום: .
אם עניתם , ספרתם : גם בלוק מול עצמו וגם כל זוג פעמיים. אם עניתם , עצרתם אחרי מעבר אחד.
תרגול · חשבו
השאלה
באותה שורה הפוכה של 8 בלוקים, כמה החלפות יעשה מיון בועות?
התשובה הנכונה
28 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 8 בלוקיםקבוע
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- בלוקים
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- Swaps the whole sort makes (merge sort moves instead and makes none)
/nodes/sort/outputs/swaps
תשובות שגויות שהשאלה מזהה
64 ± 0.01
טעות נפוצה: Counts n × n comparisons for comparing every pair, counting each pair twice and a block against itself.
משוב מהקטלוג
כדי להשוות כל זוג פעם אחת, כל בלוק נפגש עם כל אחד מ־ האחרים, וזה , אבל כך כל זוג נספר פעמיים, פעם מכל צד. לכן מספר הזוגות הוא : לשמונה בלוקים , לא . זה בסדר גודל של , אבל לא עצמו.
משוב לתשובה נכונה
28, כמו מספר ההשוואות: בשורה הפוכה כל זוג של בלוקים עומד בסדר הלא נכון, וכל החלפה של שכנים מתקנת בדיוק זוג אחד.
רמז
בכמה מההשוואות בשורה הפוכה השמאלי גבוה יותר?
פתרון מלא
- זוג “הפוך” הוא שני בלוקים שהגבוה מביניהם עומד משמאל. בשורה הפוכה כל הזוגות הפוכים.
- החלפה של שני שכנים מתקנת את הזוג שלהם, ולא משנה אף זוג אחר.
- לכן צריך בדיוק החלפות.
אם עניתם , החלפתם את הקצוות זה עם זה, כמו בהיפוך ביד. מיון בועות מחליף רק שכנים.
תרגול · נבאו, ואז הסתכלו
השאלה
סדר התחלתי יתחלף לכמעט ממוין: 2 1 3 4 5 6 7 8, רק שני הבלוקים הראשונים הפוכים. מיון בועות עוצר אחרי מעבר שלא החליף כלום. כמה השוואות יעשה?
התשובה הנכונה
13 ± 0.01
ניבוי מספרי נחשב נכון בטווח ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 8 בלוקיםקבוע
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- בלוקים
אחרי נעילת הניבוי הסצנה משתנה
- סדר התחלתי
- כמעט ממויןקבוע
ואז הסצנה מראה: 13 · Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisonsניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
. המעבר הראשון מחליף את 2 ו־1 ומסיים ממוין; המעבר השני לא מוצא מה להחליף, והמיון נעצר. במקום 28, 13.
פתרון מלא
- מעבר ראשון: השוואות, החלפה אחת, והשורה ממוינת.
- מעבר שני: השוואות, אף החלפה.
- מעבר בלי החלפה פירושו שהשורה ממוינת, ולכן עוצרים: .
השורה ההתחלתית משנה את העבודה: אותו אלגוריתם, אותם שמונה בלוקים, פחות מחצי ההשוואות.
שיעור 2 מתוך 4 · כ־25 דקות
להשוות בין מיונים
ארבע שיטות לאותה בעיה: מיון בועות, מיון הכנסה, מיון מיזוג ומיון מהיר. מודדים כמה השוואות כל אחת עושה על אותה שורה, מגלים שמספר ההחלפות קבוע, ורואים שגם לשיטה מהירה יש מקרה גרוע.
5 השלבים והתשובות שלהם
תרגול · נבאו, ואז הסתכלו
השאלה
שישה־עשר בלוקים, כמעט ממוין. איזה אלגוריתם ימיין את השורה הזאת בהכי מעט השוואות?
התשובה הנכונה
נכונה מיון הכנסה
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועות
- גודל הרשימה
- 16 בלוקיםקבוע
- סדר התחלתי
- כמעט ממויןקבוע
- הצגת קצב הגדילה
- בלוקים
האפשרויות
נכונה מיון הכנסה
שגויה מיון מהיר
טעות נפוצה: Thinks quicksort is always the fastest sort, whatever the starting row.
משוב מהקטלוג
מיון מהיר מהיר בממוצע, על שורה מעורבבת. הגרסה כאן בוחרת תמיד את הבלוק האחרון כאיבר ציר, ובשורה ממוינת או הפוכה הבלוק הזה הוא הגבוה או הנמוך ביותר: כל חלוקה מורידה רק בלוק אחד, והמיון עושה השוואות, כמו מיון בועות. ספריות מיון אמיתיות בוחרות ציר אקראי או חציוני כדי להתחמק מזה.
שגויה מיון מיזוג
משוב
מיון מיזוג עושה בערך אותה עבודה על כל שורה: הוא מפצל וממזג בכל מקרה. כאן 34 השוואות.
שגויה מיון בועות
משוב
מיון בועות עוצר מוקדם, אבל רק אחרי מעבר שלם בלי החלפות, ובלוק שצריך לזוז שמאלה זז מקום אחד בכל מעבר. כאן 42 השוואות.
אחרי נעילת הניבוי הסצנה משתנה
- אלגוריתם
- מיון הכנסה
ואז הסצנה מראה: 19 · Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisonsניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
מיון הכנסה, ב־19 השוואות בלבד. כל בלוק חדש מחליק שמאלה רק עד שהוא פוגש בלוק נמוך ממנו, ובשורה כמעט ממוינת זה כמעט מיד. מיון מהיר, דווקא, עושה כאן 109.
פתרון מלא
- מיון הכנסה לוקח בלוק אחר בלוק ומחליק אותו שמאלה כל עוד השכן שלו גבוה ממנו.
- בשורה כמעט ממוינת רוב הבלוקים כבר במקומם: השוואה אחת, ומיד עוצרים.
- לכן העבודה קרובה ל־ השוואות, ועוד מעט בשביל הבלוקים שזזו.
מיון מהיר עם הבלוק האחרון כאיבר ציר מתקשה דווקא בשורות ממוינות: כל חלוקה מורידה בלוק אחד.
תרגול · חשבו
השאלה
מיון מיזוג על שורה הפוכה של 8 בלוקים. מיון בועות עשה כאן 28 השוואות. כמה השוואות יעשה מיון מיזוג?
התשובה הנכונה
12 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון מיזוגקבוע
- גודל הרשימה
- 8 בלוקיםקבוע
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- בלוקים
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisons
תשובות שגויות שהשאלה מזהה
28 ± 0.01
משוב
28 הוא מספר ההשוואות של מיון בועות. אלגוריתמים שונים עושים כמויות עבודה שונות על אותה שורה בדיוק.
64 ± 0.01
טעות נפוצה: Counts n × n comparisons for comparing every pair, counting each pair twice and a block against itself.
משוב מהקטלוג
כדי להשוות כל זוג פעם אחת, כל בלוק נפגש עם כל אחד מ־ האחרים, וזה , אבל כך כל זוג נספר פעמיים, פעם מכל צד. לכן מספר הזוגות הוא : לשמונה בלוקים , לא . זה בסדר גודל של , אבל לא עצמו.
משוב לתשובה נכונה
12. כשממזגים שני חצאים ממוינים, כל השוואה מורידה בלוק אחד לשורה התחתונה. בשורה הפוכה כל הבלוקים בחצי הימני נמוכים מכל אלה שבשמאלי, ולכן ההשוואות נגמרות כשהחצי הימני נגמר: .
רמז
בכמה רמות מפצלים שמונה בלוקים, וכמה השוואות עולה כל רמה בשורה הפוכה?
פתרון מלא
- מיון מיזוג מפצל את השמונה לחצאים, לרבעים ולבלוקים בודדים: שלוש רמות, .
- בכל רמה ממזגים זוגות של חלקים. בשורה הפוכה, מיזוג של שני חלקים בגודל עולה השוואות.
- ברמה התחתונה ארבעה מיזוגים של , באמצעית שניים של , ולמעלה אחד של : .
אם עניתם , הנחתם שכל מיון עושה אותה עבודה. הוא לא: לכן משווים בין אלגוריתמים.
תרגול · נבאו, ואז הסתכלו
השאלה
על השורה המעורבבת הזאת של 16 בלוקים, מיון בועות עושה 72 החלפות. אלגוריתם יתחלף למיון הכנסה, שגם הוא מחליף רק שכנים. כמה החלפות יעשה?
התשובה הנכונה
נכונה בדיוק 72
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועות
- גודל הרשימה
- 16 בלוקיםקבוע
- סדר התחלתי
- מעורבבקבוע
- הצגת קצב הגדילה
- בלוקים
האפשרויות
נכונה בדיוק 72
שגויה פחות, כי מיון הכנסה מהיר יותר
משוב
מיון הכנסה עושה פחות השוואות כאן, 85 במקום 120. אבל כל החלפה של שכנים מתקנת זוג הפוך אחד, ושני המיונים צריכים לתקן את כל הזוגות ההפוכים.
שגויה יותר
משוב
אף אחד מהם לא מחליף סתם: כל החלפה מתקנת זוג הפוך אחד, ומספר הזוגות ההפוכים קבוע לשורה.
אחרי נעילת הניבוי הסצנה משתנה
- אלגוריתם
- מיון הכנסה
ואז הסצנה מראה: 72 · Swaps the whole sort makes (merge sort moves instead and makes none)
/nodes/sort/outputs/swapsניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
72: בדיוק מספר הזוגות ההפוכים בשורה. כל החלפה של שני שכנים מתקנת זוג אחד ולא מקלקלת אחר, ולכן כל מיון שמחליף רק שכנים עושה בדיוק אותו מספר החלפות. מה שמבדיל ביניהם הוא ההשוואות.
פתרון מלא
- זוג הפוך: שני בלוקים שהגבוה מביניהם משמאל. בשורה הזאת יש כאלה.
- החלפה של שכנים הופכת את הסדר של הזוג שלהם בלבד: מספר הזוגות ההפוכים יורד באחד.
- שורה ממוינת היא שורה עם זוגות הפוכים, ולכן כל מיון של שכנים צריך החלפות בדיוק.
תרגול · נבאו, ואז הסתכלו
השאלה
מיון מהיר ממיין את השורה המעורבבת של 16 בלוקים ב־57 השוואות. סדר התחלתי יתחלף להפוך. מה יקרה?
התשובה הנכונה
נכונה הוא יעשה 120 השוואות, כמו מיון בועות
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון מהירקבוע
- גודל הרשימה
- 16 בלוקיםקבוע
- סדר התחלתי
- מעורבב
- הצגת קצב הגדילה
- בלוקים
האפשרויות
נכונה הוא יעשה 120 השוואות, כמו מיון בועות
שגויה הוא יעשה פחות מ־57, כי שורה הפוכה מסודרת יותר
טעות נפוצה: Thinks quicksort is always the fastest sort, whatever the starting row.
משוב מהקטלוג
מיון מהיר מהיר בממוצע, על שורה מעורבבת. הגרסה כאן בוחרת תמיד את הבלוק האחרון כאיבר ציר, ובשורה ממוינת או הפוכה הבלוק הזה הוא הגבוה או הנמוך ביותר: כל חלוקה מורידה רק בלוק אחד, והמיון עושה השוואות, כמו מיון בועות. ספריות מיון אמיתיות בוחרות ציר אקראי או חציוני כדי להתחמק מזה.
שגויה בערך אותו דבר, כי מיון מהיר תמיד מהיר
טעות נפוצה: Thinks quicksort is always the fastest sort, whatever the starting row.
משוב מהקטלוג
מיון מהיר מהיר בממוצע, על שורה מעורבבת. הגרסה כאן בוחרת תמיד את הבלוק האחרון כאיבר ציר, ובשורה ממוינת או הפוכה הבלוק הזה הוא הגבוה או הנמוך ביותר: כל חלוקה מורידה רק בלוק אחד, והמיון עושה השוואות, כמו מיון בועות. ספריות מיון אמיתיות בוחרות ציר אקראי או חציוני כדי להתחמק מזה.
אחרי נעילת הניבוי הסצנה משתנה
- סדר התחלתי
- הפוך
ואז הסצנה מראה: 120 · Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisonsניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
. איבר הציר הוא הבלוק האחרון, ובשורה הפוכה הוא הנמוך ביותר: החלוקה משאירה את כל השאר בצד אחד, וכך שוב ושוב. זה המקרה הגרוע של המיון הזה.
פתרון מלא
- מיון מהיר בוחר איבר ציר ומחלק את השאר לנמוכים ממנו ולגבוהים ממנו; כל בלוק מושווה לציר פעם אחת.
- בשורה הפוכה הציר, הבלוק האחרון, הוא הנמוך ביותר, ולכן החלוקה מורידה בלוק אחד בלבד: השוואות, ואז , ואז …
- סך הכול .
בשורה מעורבבת הציר נופל בדרך כלל באמצע, והחלוקות מתאזנות.
תרגול · הגיעו למטרה
השאלה
שלושים ושניים בלוקים, מעורבב. מיון בועות צריך כאן 451 השוואות. בחרו את אלגוריתם שממיין את השורה הזאת בהכי מעט השוואות, ולחצו על בדיקה.
המטרה
121 ± 0.5
בתחילת השלב: 451
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועות
- גודל הרשימה
- 32 בלוקיםקבוע
- סדר התחלתי
- מעורבבקבוע
- הצגת קצב הגדילה
- בלוקים
- נקרא מהסצנה בנקודה
- Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisons
הגדרה אחת שמגיעה למטרה
- אלגוריתם
- מיון מיזוג
משוב לתשובה נכונה
מיון מיזוג, ב־121 השוואות. מיון מהיר קרוב מאוד, 126, ומיון הכנסה צריך 255. על שורה מעורבבת שתי השיטות שמפצלות לחצאים מנצחות.
משוב לתשובה שגויה
עוד לא: יש אלגוריתם שעושה פחות השוואות.
רמז
נסו את כל ארבעת האלגוריתמים, וקראו את ההשוואות על הלוחית כשהמיון מסתיים.
פתרון מלא
- מיון בועות ומיון הכנסה עושים בערך עד השוואות על שורה מעורבבת: כאן 451 ו־255.
- מיון מיזוג ומיון מהיר מפצלים לחצאים, ועושים בערך השוואות או פחות.
- מדדו את שניהם: מיזוג 121, מהיר 126.
ההפרש בין השניים קטן ותלוי בשורה; ההפרש בינם לבין מיון בועות גדל עם הרשימה.
שיעור 3 מתוך 4 · כ־20 דקות
חיפוש וחציה
שתי דרכים למצוא שם ברשימה: לבדוק אחד אחד, או לפתוח באמצע ולהשליך חצי. למה חיפוש בינארי צריך רשימה ממוינת, ואיך הלוגריתם לפי בסיס שתיים סופר כמה חציות הוא צריך.
5 השלבים והתשובות שלהם
תרגול · חשבו
השאלה
ברשימה לא ממוינת של 1000 שמות מחפשים שם אחד, ובודקים אותם אחד אחד מההתחלה: חיפוש סדרתי. במקרה הגרוע ביותר, כמה שמות צריך לבדוק?
התשובה הנכונה
1000 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- הגדילה בכל צעד
- 2 ×קבוע
- מספר הצעדים
- 1
- סולם רגיל / סולם לוגריתמי
- סולם רגיל
- מתקבלת בטווח
- ± 0.01
- ערך קבוע בשאלה
תשובות שגויות שהשאלה מזהה
500 ± 0.01
טעות נפוצה: Mixes up the worst case with the average case: gives half the list as the most a linear search can take.
משוב מהקטלוג
המקרה הגרוע שואל מה הכי הרבה שהאלגוריתם עלול לעשות. בחיפוש סדרתי ברשימה של 1000 שמות, השם שמחפשים יכול להיות האחרון, או לא להיות ברשימה בכלל, ואז בודקים את כל 1000. 500 הוא הממוצע כשהשם נמצא ברשימה, במקום אקראי.
10 ± 0.01
טעות נפוצה: Thinks binary search works on any list, sorted or not.
משוב מהקטלוג
חיפוש בינארי פותח באמצע ומשליך חצי מהרשימה, וזה מותר רק כשהרשימה ממוינת: אם השם באמצע בא אחרי השם שמחפשים, כל החצי שאחריו בא גם הוא אחריו. ברשימה לא ממוינת השם יכול להיות בכל מקום, ונשאר רק לבדוק אחד אחד. לכן ממיינים פעם אחת, כדי לחפש מהר הרבה פעמים.
משוב לתשובה נכונה
כל 1000: השם יכול להיות האחרון, או לא להיות ברשימה כלל, ואז רק אחרי השם האחרון יודעים. העבודה גדלה ליניארית: רשימה כפולה, עבודה כפולה.
פתרון מלא
- המקרה הגרוע הוא הקלט שמכריח את האלגוריתם לעבוד הכי קשה.
- בחיפוש סדרתי זה כשהשם אחרון ברשימה או חסר בה.
- אז בודקים את כל השמות: 1000.
אם עניתם , נתתם את הממוצע כשהשם ברשימה במקום אקראי. אם עניתם , חשבתם על חיפוש בינארי, שעובד רק ברשימה ממוינת.
תרגול · בחרו
השאלה
חיפוש בינארי פותח את הרשימה באמצע, בודק אם השם שם בא לפני השם שמחפשים או אחריו, ומשליך את החצי שבו השם לא יכול להיות. מה חייב להיות נכון ברשימה?
התשובה הנכונה
נכונה היא ממוינת
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- הגדילה בכל צעד
- 2 ×קבוע
- מספר הצעדים
- 1
- סולם רגיל / סולם לוגריתמי
- סולם רגיל
האפשרויות
מוצגות בסדר אקראי.
נכונה היא ממוינת
שגויה שום דבר: זה עובד על כל רשימה
טעות נפוצה: Thinks binary search works on any list, sorted or not.
משוב מהקטלוג
חיפוש בינארי פותח באמצע ומשליך חצי מהרשימה, וזה מותר רק כשהרשימה ממוינת: אם השם באמצע בא אחרי השם שמחפשים, כל החצי שאחריו בא גם הוא אחריו. ברשימה לא ממוינת השם יכול להיות בכל מקום, ונשאר רק לבדוק אחד אחד. לכן ממיינים פעם אחת, כדי לחפש מהר הרבה פעמים.
שגויה האורך שלה הוא חזקה של 2
משוב
אורך שהוא חזקה של 2 נוח לחשבון, אבל לא נחוץ: כשהחצאים לא שווים, לוקחים את האמצע מעוגל, ומקסימום צעד אחד נוסף.
שגויה היא קצרה
משוב
דווקא ברשימות ארוכות חיפוש בינארי מנצח הכי בגדול.
משוב לתשובה נכונה
רק ברשימה ממוינת, השם באמצע אומר משהו על החצי שאחריו. במילון, אם פתחתם ב־“מ” ומחפשים “כ”, כל מה שאחרי “מ” לא רלוונטי.
פתרון מלא
- משליכים חצי כי יודעים שהשם לא שם.
- יודעים את זה רק אם כל השמות באותו חצי באים אחרי השם שבאמצע, וזה נכון רק ברשימה ממוינת.
- ברשימה לא ממוינת אין מה להשליך, ונשאר חיפוש סדרתי.
תרגול · הגיעו למטרה
השאלה
בלוח, כל צעד מכפיל את הערימה פי 2; חיפוש בינארי הולך באותה דרך הפוך, וחוצה. שנו את מספר הצעדים עד שהעמודה האחרונה מגיעה ל־1024, ולחצו על בדיקה. זה מספר החציות שמקטינות 1024 שמות לשם אחד.
המטרה
1024 ± 0.5
בתחילת השלב: 2
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- הגדילה בכל צעד
- 2 ×קבוע
- מספר הצעדים
- 1
- סולם רגיל / סולם לוגריתמי
- סולם רגיל
- נקרא מהסצנה בנקודה
- Growth: the last column, g^n
/nodes/board/outputs/growthValue
הגדרה אחת שמגיעה למטרה
- מספר הצעדים
- 10
משוב לתשובה נכונה
עשרה צעדים: . לכן חיפוש בינארי ב־1024 שמות ממוינים מוצא כל שם בעשר בדיקות לכל היותר, במקום עד 1024 בחיפוש סדרתי. .
משוב לתשובה שגויה
עוד לא. הסתכלו על המספר בראש העמודה האחרונה.
רמז
. כמה צעדים עוד עד ?
פתרון מלא
- כל חציה מקטינה את הרשימה פי 2; כל צעד בלוח מגדיל אותה פי 2.
- מספר החציות מ־1024 ל־1 הוא מספר ההכפלות מ־1 ל־1024: .
- , ולכן .
תרגול · נבאו, ואז הסתכלו
השאלה
ב־1024 שמות ממוינים חיפוש בינארי צריך עשר בדיקות. כמה הוא יצטרך ב־2048 שמות, פי שניים?
התשובה הנכונה
נכונה 11
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- הגדילה בכל צעד
- 2 ×קבוע
- מספר הצעדים
- 10קבוע
- סולם רגיל / סולם לוגריתמי
- סולם רגיל
האפשרויות
נכונה 11
שגויה 20
טעות נפוצה: Thinks doubling the list doubles the number of steps a binary search takes.
משוב מהקטלוג
כל צעד של חיפוש בינארי חוצה את הרשימה. רשימה כפולה צריכה רק חציה אחת נוספת כדי לחזור לגודל הקודם, ולכן מספר הצעדים עולה באחד: 1024 שמות דורשים 10 צעדים, ו־2048 דורשים 11. זו התכונה של הלוגריתם: .
שגויה עדיין 10
משוב
עשר חציות מקטינות 2048 רק עד 2 שמות; צריך עוד אחת.
אחרי נעילת הניבוי הסצנה משתנה
- מספר הצעדים
- 11קבוע
ואז הסצנה מראה: 2048 · Growth: the last column, g^n
/nodes/board/outputs/growthValueניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
11: החציה הראשונה מורידה את 2048 ל־1024, ומשם עוד עשר. הכפלה של הרשימה מוסיפה בדיקה אחת. זה מה שהופך חיפוש בינארי למהיר כל כך ברשימות ענק.
פתרון מלא
- .
- אחרי חציה אחת נשארים 1024 שמות, וממנה צריך עוד .
- סך הכול .
כללית, : כפל בתוך הלוגריתם הוא חיבור מחוצה לו.
תרגול · חשבו
השאלה
ספר טלפונים ממוין של מיליון שמות. כמה בדיקות, לכל היותר, צריך חיפוש בינארי? (רמז: , כמעט אלף.)
התשובה הנכונה
20 ± 0.5
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- הגדילה בכל צעד
- 2 ×קבוע
- מספר הצעדים
- 10
- סולם רגיל / סולם לוגריתמי
- סולם לוגריתמי
- מתקבלת בטווח
- ± 0.5
- ערך קבוע בשאלה
תשובות שגויות שהשאלה מזהה
6 ± 0.5
טעות נפוצה: Counts halvings with powers of ten, taking about 6 steps for a million because a million is 10⁶.
משוב מהקטלוג
חיפוש בינארי חוצה, ולכן סופרים חזקות של 2, לא של 10. מיליון הוא , אבל כל צעד מקטין פי שניים ולא פי עשרה. , כלומר עשר חציות מקטינות פי אלף בערך, ועשרים חציות פי מיליון בערך: . לכן .
500000 ± 0.5
טעות נפוצה: Mixes up the worst case with the average case: gives half the list as the most a linear search can take.
משוב
500000 הוא הממוצע של חיפוש סדרתי. חיפוש בינארי משליך חצי מהרשימה בכל בדיקה.
משוב לתשובה נכונה
20: , קצת יותר ממיליון. חיפוש סדרתי היה צריך עד מיליון בדיקות; החיפוש הבינארי צריך עשרים.
רמז
כמה פעמים צריך להכפיל את 1024 בעצמו?
פתרון מלא
- מיליון הוא בערך אלף כפול אלף.
- כל אלף הוא בערך , ולכן מיליון הוא בערך .
- קטן ממיליון, ו־ גדול ממנו, ולכן עשרים חציות מספיקות ותשע־עשרה לא.
אם עניתם , ספרתם חזקות של 10; כל צעד מקטין פי 2, לא פי 10.
שיעור 4 מתוך 4 · כ־25 דקות
קצב גדילה ו־O גדולה
מה קורה לעבודה כשהרשימה מוכפלת: מיון בועות גדל כמו ריבוע האורך, ומיון מיזוג רק מעט מהר יותר מהאורך עצמו. הגרף שמשווה ביניהם, הסימון O גדולה, ולמה אלגוריתם טוב מנצח מחשב מהיר.
6 השלבים והתשובות שלהם
תרגול · נבאו, ואז הסתכלו
השאלה
מיון בועות על שורה הפוכה של 16 בלוקים עושה 120 השוואות. גודל הרשימה יוכפל ל־32. כמה השוואות יהיו?
התשובה הנכונה
נכונה בערך פי ארבעה: 496
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 16 בלוקים
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- בלוקים
האפשרויות
נכונה בערך פי ארבעה: 496
שגויה פי שניים: 240
טעות נפוצה: Expects every algorithm's work to double when its input doubles.
משוב מהקטלוג
רק עבודה שגדלה ליניארית, כמו חיפוש סדרתי, מוכפלת כשהרשימה מוכפלת. מיון בועות משווה זוגות, ומספר הזוגות גדל בערך כמו : רשימה כפולה היא בערך פי ארבעה השוואות, 120 לשישה־עשר בלוקים ו־496 לשלושים ושניים. לכן אלגוריתם שנראה זריז על עשרה פריטים יכול להיתקע על מיליון.
שגויה 136: שישה־עשר בלוקים נוספים
טעות נפוצה: Expects every algorithm's work to double when its input doubles.
משוב מהקטלוג
רק עבודה שגדלה ליניארית, כמו חיפוש סדרתי, מוכפלת כשהרשימה מוכפלת. מיון בועות משווה זוגות, ומספר הזוגות גדל בערך כמו : רשימה כפולה היא בערך פי ארבעה השוואות, 120 לשישה־עשר בלוקים ו־496 לשלושים ושניים. לכן אלגוריתם שנראה זריז על עשרה פריטים יכול להיתקע על מיליון.
אחרי נעילת הניבוי הסצנה משתנה
- גודל הרשימה
- 32 בלוקים
ואז הסצנה מראה: 496 · Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisonsניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
, בערך פי ארבעה מ־120. רשימה כפולה היא פי שניים בלוקים, וכל אחד מהם צריך להיפגש עם פי שניים בלוקים אחרים.
פתרון מלא
- בשורה הפוכה מיון בועות משווה כל זוג: .
- ל־: .
- היחס: .
כשהעבודה גדלה כמו , הכפלה של מכפילה אותה פי .
תרגול · נבאו, ואז הסתכלו
השאלה
עכשיו מיון מיזוג: על שורה הפוכה של 16 בלוקים הוא עושה 32 השוואות. מה יקרה כשגודל הרשימה יוכפל ל־32?
התשובה הנכונה
נכונה קצת יותר מפי שניים
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון מיזוגקבוע
- גודל הרשימה
- 16 בלוקים
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- בלוקים
האפשרויות
נכונה קצת יותר מפי שניים
שגויה בערך פי ארבעה, כמו מיון בועות
משוב
מיון מיזוג לא משווה כל זוג. הוא ממזג רמה אחר רמה, ומספר הרמות, , עולה רק באחד כשהרשימה מוכפלת.
שגויה בדיוק פי שניים
משוב
קרוב, אבל יש גם רמה נוספת של מיזוגים: לא אלא קצת יותר.
אחרי נעילת הניבוי הסצנה משתנה
- גודל הרשימה
- 32 בלוקים
ואז הסצנה מראה: 80 · Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisonsניבוי אף פעם לא נחשב כישלון: בכל מקרה הלומדים רואים את התוצאה ואת ההסבר.
משוב לתשובה נכונה
80, פי שניים וחצי. בשורה הפוכה מיון מיזוג עושה השוואות: , ואז . גדילה כמו היא רק קצת מהירה מגדילה ליניארית.
פתרון מלא
- מיון מיזוג עובר רמות, ובשורה הפוכה כל רמה עולה השוואות.
- ל־: רמות של , כלומר .
- ל־: רמות של , כלומר .
ההכפלה מכפילה כל רמה ומוסיפה רמה אחת: .
תרגול · חשבו
השאלה
הצגת קצב הגדילה על גדילה: הסרט הכתום הוא , מספר הזוגות. מיון בועות על שורה הפוכה של 64 בלוקים משווה כל זוג פעם אחת. כמה השוואות זה?
התשובה הנכונה
2016 ± 0.01
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 64 בלוקיםקבוע
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- גדילהקבוע
- מתקבלת בטווח
- ± 0.01
- מחושבת מהסצנה בהגדרה של השלב
- N(n − 1)/2: comparing every pair once, the orange ribbon
/nodes/sort/outputs/everyPair
תשובות שגויות שהשאלה מזהה
4096 ± 0.01
טעות נפוצה: Counts n × n comparisons for comparing every pair, counting each pair twice and a block against itself.
משוב מהקטלוג
כדי להשוות כל זוג פעם אחת, כל בלוק נפגש עם כל אחד מ־ האחרים, וזה , אבל כך כל זוג נספר פעמיים, פעם מכל צד. לכן מספר הזוגות הוא : לשמונה בלוקים , לא . זה בסדר גודל של , אבל לא עצמו.
4032 ± 0.01
טעות נפוצה: Counts n × n comparisons for comparing every pair, counting each pair twice and a block against itself.
משוב מהקטלוג
כדי להשוות כל זוג פעם אחת, כל בלוק נפגש עם כל אחד מ־ האחרים, וזה , אבל כך כל זוג נספר פעמיים, פעם מכל צד. לכן מספר הזוגות הוא : לשמונה בלוקים , לא . זה בסדר גודל של , אבל לא עצמו.
משוב לתשובה נכונה
. לעומת זאת, , והסרט הכחול כבר רחוק מתחת לכתום.
רמז
עם .
פתרון מלא
- כל אחד מ־ הבלוקים נפגש עם אחרים: .
- כך כל זוג נספר פעמיים, ולכן מחלקים ב־.
- .
אם עניתם , חישבתם : זה סופר גם בלוק מול עצמו וגם כל זוג פעמיים.
תרגול · בחרו
השאלה
בשורה הפוכה מיון בועות עושה השוואות. איך כותבים את זה בסימון O גדולה?
התשובה הנכונה
נכונה
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועות
- גודל הרשימה
- 64 בלוקים
- סדר התחלתי
- מעורבב
- הצגת קצב הגדילה
- גדילה
האפשרויות
מוצגות בסדר אקראי.
נכונה
שגויה
טעות נפוצה: Keeps the constant factors and smaller terms inside big-O, writing O(½n² − ½n) instead of O(n²).
משוב מהקטלוג
O גדולה מתארת רק איך העבודה גדלה כש־ גדל, ולכן משמיטים כפולות קבועות ואיברים שגדלים לאט יותר. ב־ האיבר שולט: כשמכפילים את פי עשרה, העבודה גדלה בערך פי מאה, מה שלא יהיה המקדם. לכן מיון בועות הוא .
שגויה
טעות נפוצה: Keeps the constant factors and smaller terms inside big-O, writing O(½n² − ½n) instead of O(n²).
משוב מהקטלוג
O גדולה מתארת רק איך העבודה גדלה כש־ גדל, ולכן משמיטים כפולות קבועות ואיברים שגדלים לאט יותר. ב־ האיבר שולט: כשמכפילים את פי עשרה, העבודה גדלה בערך פי מאה, מה שלא יהיה המקדם. לכן מיון בועות הוא .
שגויה
טעות נפוצה: Expects every algorithm's work to double when its input doubles.
משוב מהקטלוג
רק עבודה שגדלה ליניארית, כמו חיפוש סדרתי, מוכפלת כשהרשימה מוכפלת. מיון בועות משווה זוגות, ומספר הזוגות גדל בערך כמו : רשימה כפולה היא בערך פי ארבעה השוואות, 120 לשישה־עשר בלוקים ו־496 לשלושים ושניים. לכן אלגוריתם שנראה זריז על עשרה פריטים יכול להיתקע על מיליון.
משוב לתשובה נכונה
: האיבר שגדל הכי מהר הוא , והמקדם לא משנה את הצורה של הגדילה. O גדולה עונה על שאלה אחת: מה קורה לעבודה כש־ גדל.
פתרון מלא
- משאירים את האיבר שגדל הכי מהר: . האיבר זניח לרשימות ארוכות; ל־ הוא פחות מעשירית האחוז.
- משמיטים את המקדם : הוא לא משנה פי כמה גדלה העבודה כש־ מוכפל.
- התוצאה: .
מיון מיזוג, לעומתו, הוא , וחיפוש בינארי .
תרגול · הגיעו למטרה
השאלה
מיון בועות, הפוך. שנו את גודל הרשימה עד שהמיון עושה בדיוק 190 השוואות, ולחצו על בדיקה.
המטרה
190 ± 0.5
בתחילת השלב: 120
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון בועותקבוע
- גודל הרשימה
- 16 בלוקים
- סדר התחלתי
- הפוךקבוע
- הצגת קצב הגדילה
- בלוקים
- נקרא מהסצנה בנקודה
- Comparisons the whole sort makes on the first row
/nodes/sort/outputs/comparisons
הגדרה אחת שמגיעה למטרה
- גודל הרשימה
- 20 בלוקים
משוב לתשובה נכונה
20 בלוקים: .
משוב לתשובה שגויה
עוד לא. חשבו לגודל שבחרתם.
רמז
: חפשו שני מספרים עוקבים שמכפלתם .
פתרון מלא
- רוצים , כלומר .
- קרוב ל־, ולכן קרוב ל־.
- בודקים: . לכן .
תרגול · בחרו
השאלה
צריך למיין מיליון פריטים מעורבבים. מחשב א מבצע השוואות בשנייה ומריץ מיון בועות, כ־ השוואות. מחשב ב איטי פי מאה, השוואות בשנייה, ומריץ מיון מיזוג, כ־ השוואות. מי מסיים ראשון?
התשובה הנכונה
נכונה מחשב ב, עם מיון מיזוג
הגדרות, אפשרויות ומשוב
הסצנה בשלב הזה
- אלגוריתם
- מיון מיזוג
- גודל הרשימה
- 64 בלוקים
- סדר התחלתי
- מעורבב
- הצגת קצב הגדילה
- גדילה
האפשרויות
מוצגות בסדר אקראי.
נכונה מחשב ב, עם מיון מיזוג
שגויה מחשב א, כי הוא מהיר פי מאה
טעות נפוצה: Thinks a faster computer makes up for a slow algorithm.
משוב מהקטלוג
מחשב מהיר פי מאה מקצר את הזמן פי מאה, ולא יותר. אלגוריתם טוב יותר יכול לקצר אותו פי אלפים, וההפרש גדל עם הרשימה. למיון של מיליון פריטים, מיון בועות עושה בערך השוואות, ומיון מיזוג כ־: פי עשרים וחמישה אלף פחות. שום שדרוג חומרה לא סוגר פער כזה.
שגויה בערך יחד
טעות נפוצה: Thinks a faster computer makes up for a slow algorithm.
משוב מהקטלוג
מחשב מהיר פי מאה מקצר את הזמן פי מאה, ולא יותר. אלגוריתם טוב יותר יכול לקצר אותו פי אלפים, וההפרש גדל עם הרשימה. למיון של מיליון פריטים, מיון בועות עושה בערך השוואות, ומיון מיזוג כ־: פי עשרים וחמישה אלף פחות. שום שדרוג חומרה לא סוגר פער כזה.
משוב לתשובה נכונה
מחשב ב, בכ־2 s; מחשב א צריך כ־500 s, יותר משמונה דקות. אלגוריתם טוב יותר ניצח מחשב מהיר פי מאה, ועל רשימה ארוכה יותר הפער רק יגדל.
רמז
חלקו את מספר ההשוואות של כל מחשב במספר ההשוואות שהוא מבצע בשנייה.
פתרון מלא
- מחשב א: שניות.
- מחשב ב: שניות.
- מחשב ב מסיים מהר פי .
מהירות המחשב מכפילה את הזמן במספר קבוע; האלגוריתם קובע איך הזמן גדל עם הרשימה.
בכל היחידה · 12 טעויות נפוצות
קטלוג הטעויות הנפוצות
כל טעות נפוצה שהיחידה מזהה, בכמה מילים. פתחו טעות כדי לראות מה הלומדים קוראים כשהתשובה מתאימה לה, ואיפה היא נשאלת.
Takes an algorithm to be a program written in a programming language, rather than the exact steps any person or machine could follow.
- הלומדים קוראים
אלגוריתם הוא השיטה, לא הקוד. מתכון לעוגה, תרגיל חילוק ארוך במחברת ומיון בועות הם אלגוריתמים, כי כל אחד מהם הוא רשימה סופית של צעדים מדויקים שתמיד מגיעה לתשובה. תוכנית היא אלגוריתם שכתבו בשפה שמחשב מבין; אותו אלגוריתם אפשר לכתוב בכל שפה, או לבצע ביד.
- מזוהה בשאלות
Thinks a single pass of bubble sort along the row leaves it sorted.
- הלומדים קוראים
מעבר אחד של מיון בועות מבטיח רק דבר אחד: הבלוק הגבוה ביותר נסחף עד הקצה הימני. שאר הבלוקים זזים לכל היותר מקום אחד שמאלה. לכן צריך עוד מעבר, ועוד אחד, וכל מעבר נעצר מקום אחד לפני הקודם. בשורה הפוכה של שמונה בלוקים יש שבעה מעברים: השוואות.
Counts n × n comparisons for comparing every pair, counting each pair twice and a block against itself.
- הלומדים קוראים
כדי להשוות כל זוג פעם אחת, כל בלוק נפגש עם כל אחד מ־ האחרים, וזה , אבל כך כל זוג נספר פעמיים, פעם מכל צד. לכן מספר הזוגות הוא : לשמונה בלוקים , לא . זה בסדר גודל של , אבל לא עצמו.
Thinks quicksort is always the fastest sort, whatever the starting row.
- הלומדים קוראים
מיון מהיר מהיר בממוצע, על שורה מעורבבת. הגרסה כאן בוחרת תמיד את הבלוק האחרון כאיבר ציר, ובשורה ממוינת או הפוכה הבלוק הזה הוא הגבוה או הנמוך ביותר: כל חלוקה מורידה רק בלוק אחד, והמיון עושה השוואות, כמו מיון בועות. ספריות מיון אמיתיות בוחרות ציר אקראי או חציוני כדי להתחמק מזה.
Thinks every sorting algorithm does the same amount of work on the same list, since they all end with the same sorted row.
- הלומדים קוראים
כל המיונים מסיימים באותה שורה ממוינת, אבל הדרך שונה, וגם כמות העבודה. על השורה ההפוכה של שמונה בלוקים מיון בועות עושה 28 השוואות ומיון מיזוג 12; על שורה הפוכה של אלף בלוקים ההפרש כבר פי מאה בערך. בשביל זה סופרים השוואות: כדי לבחור שיטה.
- מזוהה בשאלות
Mixes up the worst case with the average case: gives half the list as the most a linear search can take.
- הלומדים קוראים
המקרה הגרוע שואל מה הכי הרבה שהאלגוריתם עלול לעשות. בחיפוש סדרתי ברשימה של 1000 שמות, השם שמחפשים יכול להיות האחרון, או לא להיות ברשימה בכלל, ואז בודקים את כל 1000. 500 הוא הממוצע כשהשם נמצא ברשימה, במקום אקראי.
Thinks binary search works on any list, sorted or not.
- הלומדים קוראים
חיפוש בינארי פותח באמצע ומשליך חצי מהרשימה, וזה מותר רק כשהרשימה ממוינת: אם השם באמצע בא אחרי השם שמחפשים, כל החצי שאחריו בא גם הוא אחריו. ברשימה לא ממוינת השם יכול להיות בכל מקום, ונשאר רק לבדוק אחד אחד. לכן ממיינים פעם אחת, כדי לחפש מהר הרבה פעמים.
Thinks doubling the list doubles the number of steps a binary search takes.
- הלומדים קוראים
כל צעד של חיפוש בינארי חוצה את הרשימה. רשימה כפולה צריכה רק חציה אחת נוספת כדי לחזור לגודל הקודם, ולכן מספר הצעדים עולה באחד: 1024 שמות דורשים 10 צעדים, ו־2048 דורשים 11. זו התכונה של הלוגריתם: .
- מזוהה בשאלות
Counts halvings with powers of ten, taking about 6 steps for a million because a million is 10⁶.
- הלומדים קוראים
חיפוש בינארי חוצה, ולכן סופרים חזקות של 2, לא של 10. מיליון הוא , אבל כל צעד מקטין פי שניים ולא פי עשרה. , כלומר עשר חציות מקטינות פי אלף בערך, ועשרים חציות פי מיליון בערך: . לכן .
- מזוהה בשאלות
Expects every algorithm's work to double when its input doubles.
- הלומדים קוראים
רק עבודה שגדלה ליניארית, כמו חיפוש סדרתי, מוכפלת כשהרשימה מוכפלת. מיון בועות משווה זוגות, ומספר הזוגות גדל בערך כמו : רשימה כפולה היא בערך פי ארבעה השוואות, 120 לשישה־עשר בלוקים ו־496 לשלושים ושניים. לכן אלגוריתם שנראה זריז על עשרה פריטים יכול להיתקע על מיליון.
Keeps the constant factors and smaller terms inside big-O, writing O(½n² − ½n) instead of O(n²).
- הלומדים קוראים
O גדולה מתארת רק איך העבודה גדלה כש־ גדל, ולכן משמיטים כפולות קבועות ואיברים שגדלים לאט יותר. ב־ האיבר שולט: כשמכפילים את פי עשרה, העבודה גדלה בערך פי מאה, מה שלא יהיה המקדם. לכן מיון בועות הוא .
- מזוהה בשאלות
Thinks a faster computer makes up for a slow algorithm.
- הלומדים קוראים
מחשב מהיר פי מאה מקצר את הזמן פי מאה, ולא יותר. אלגוריתם טוב יותר יכול לקצר אותו פי אלפים, וההפרש גדל עם הרשימה. למיון של מיליון פריטים, מיון בועות עושה בערך השוואות, ומיון מיזוג כ־: פי עשרים וחמישה אלף פחות. שום שדרוג חומרה לא סוגר פער כזה.
- מזוהה בשאלות