logo

אלגוריתם בשפת C

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

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

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

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

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

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

תכונות האלגוריתם

הוא מגדיר מספר תכונות חשובות של האלגוריתם, כולל:

    תשומות: אלגוריתמים חייבים לקבל קלט שניתן לייצג כערכים או נתונים.תְפוּקָה: האלגוריתם אמור לייצר פלט כלשהו. זה יכול להיות תוצאה של בעיה או פתרון שנועד לפתור אותה.בְּהִירוּת: יש להגדיר במדויק אלגוריתמים, תוך שימוש בהוראות חד משמעיות שמחשב או מערכת אחרת יכולים לבצע באופן חד משמעי.סוֹפִיוּת: האלגוריתם דורש שלבים מוגבלים. זה אומר שצריך לצאת ממנו לאחר ביצוע מספר מסוים של פקודות.תוֹקֶף: האלגוריתם חייב להיות חוקי. במילים אחרות, הוא אמור להיות מסוגל לייצר פתרון לבעיה שהאלגוריתם נועד לפתור בפרק זמן סביר.יְעִילוּת:אלגוריתם חייב להיות יעיל, כלומר עליו להיות מסוגל לייצר פתרון לבעיה שהוא נועד לפתור תוך פרק זמן סביר.כְּלָלִיוּת:אלגוריתם חייב להיות כללי, כלומר ניתן ליישם אותו על מגוון רחב של בעיות במקום להיות ספציפי לבעיה אחת.

ניתוח אלגוריתם

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

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

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

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

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

דיאגרמת uml java
    יַצִיבוּת:- זה מתייחס ליכולת של האלגוריתם לשמור על הסדר היחסי של האלמנטים במערך הנתונים.מקבילות:- הכוונה היא ליכולת לבצע פעולות במקביל על פני מספר מעבדים.מדרגיות:- מצד שני, זה מתייחס ליכולת של אלגוריתם לטפל בכמויות גדולות של נתונים ותשומות אחרות.

הם כוללים שני סוגי ניתוח.

הם:-

  1. ניתוח קודם.
  2. ניתוח אחורי.

ניתוח קודם

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

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

ניתוח אחורי

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

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

מורכבות אלגוריתם

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

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

הם:-

  1. גורם זמן.
  2. גורם שטח.

גורם זמן

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

ניתוח חלל

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

איך כותבים אלגוריתם

1. תחילה הגדר את הבעיה שאתה רוצה שהאלגוריתם יפתור.

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

2. חלקו את הבעיה לשלבים קטנים יותר וניתנים לניהול.

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

3. כתוב את האלגוריתם שלך בפסאודוקוד או בשפת תכנות.

אלגוריתם כתוב בקוד פסאודו:

 MAX (list) max = list[0] For i = 1 the length of the list list IF[i] > max max = list[i] End for Maximum return Maximum end 

4. בדוק את האלגוריתם שלך כדי לוודא שהוא נכון ויעיל.

אורך מחרוזת java

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

דוגמא:-

קלט: [1, 5, 2, 7, 3]

פלט: 7.

הסבר: 7 הוא הערך המקסימלי ברשימה.

5. ייעל את האלגוריתם.

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

כתיבה בסיסית של אלגוריתמים

דוגמה: - סכום שני מספרים שלמים.

שלב 1 - להתחיל

שלב 2 - הכריז על שלושה מספרים שלמים a, b, c

שלב 3 - הגדר את הערכים של a ו-b

שלב 4 - הוסף את הערכים של a ו-b

שלב 5 - שמור את הפלט של שלב 4 ב-c

שלב 6 - הדפס ג

שלב 7 - תפסיק

סוג האלגוריתמים המשמשים בשפת C.

1. אלגוריתמי מיון

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

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

ישנם אלגוריתמי מיון שונים.

הם:-

(i) מיון בועות: אלגוריתם מיון לא מסובך שמשווה שוב ושוב רכיבים קרובים ומעביר אותם אם הם לא תקינים.

האלגוריתם למיון בועה הוא:

  1. התחל עם רשימה לא ממוינת של אלמנטים.
  2. השווה את שני האלמנטים הראשונים ברשימה. אם האלמנט הראשון גדול מהאלמנט השני, החלף אותם.
  3. עברו לזוג האלמנטים הבא וחזרו על שלב 2 עד שתגיע לסוף הרשימה.
  4. עבור כל פריט ברשימה, חזור על שלבים 2 ו-3 פעם נוספת. זה מכונה מעברים.
  5. חזור על שלבים 2-4 עבור הרשימה כולה. כאשר אתה חוזר על המעברים, אלמנטים 'יעלו' למיקומם הנכון ברשימה הממוינת.
  6. לאחר השלמת מעבר ולא מתבצעות החלפות, הרשימה ממוינת והאלגוריתם יכול להפסיק.
  7. הרשימה הסופית הממוינת מוחזרת.

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

מיון האלגוריתם להכנסה הוא:-

  1. אתחול רשימה ממוינת ריקה ורשימה לא ממוינת של האלמנטים שיש למיין.
  2. יש לקחת את החבר הראשון מהרשימה הלא ממוינת ולהציב אותו במיקום המתאים ברשימה הממוינת.
  3. חזור על שלב 2 עבור כל רכיב עוקב ברשימה הלא ממוינת.
  4. השווה את האלמנט הנוכחי עם האלמנטים ברשימה הממוינת, החל מהאלמנט מיד משמאל.
  5. החלף את שני האלמנטים אם האלמנט הנוכחי קטן מהאלמנט שמשמאלו.
  6. אם האלמנט הנוכחי גדול מהאלמנט שמשמאלו, הכנס אותו במיקום הנכון שלו ברשימה הממוינת.
  7. חזור על שלבים 4-6 עבור כל רכיב עוקב ברשימה הלא ממוינת.
  8. לאחר עיבוד כל האלמנטים, הרשימה הממוינת תכיל את כל האלמנטים בסדר הנכון.
  9. תהליך המיון הושלם.

(iii) מיון בחירה : שיטת מיון שמתחילה באופן עקבי את הרישום הממוין עם הפרט הקטן ביותר מהרישום הלא מסודר.

מיון האלגוריתם לבחירה הוא:-

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

(iv) מיון מהיר : אלגוריתם מיון חלוקה-וכבוש שבוחר אלמנט ציר ומפצל את הרשימה לרשימות משנה בהתאם אם האלמנטים קטנים או יותר מהציר. לאחר מכן, רשימות המשנה ממוינות שוב ושוב עד שהרשימה המלאה ממוינת.

האלגוריתם למיון מהיר הוא:

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

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

אלגוריתם מיון מיזוג:

  1. צור שתי רשימות משנה מהרשימה: אחת עם אלמנטים מתחת לציר ואחת עם אלמנטים מעל הציר.
  2. מייצר תת-רשימה חדשה ממוינת על ידי מיזוג איטרטיבי של תת-רשימות עד שרק תת-רשימה אחת קיימת. זו תהיה הרשימה הממוינת שלך.
  3. שלבים למיזוג שתי ספריות משנה:-
  4. צור רשימה ריקה כדי להחזיק את האלמנטים הממוינים.
  5. משווה את הרכיב הראשון של כל תת-רשימה.
  6. מוסיף את הרכיב הקטן יותר לרשימה החדשה ומסיר אותו מרשימת המשנה האב.
  7. חזור על שלבים 2 ו-3 עד שהרשימה ריקה לחלוטין.
  8. מוסיף את הרכיבים הנותרים מרשימות משנה אחרות לרשימה חדשה.
  9. מחליף את רשימת המשנה הממוזגת ברשימה הממוינת החדשה.
  10. חזור על תהליך זה עד שכל רשימות המשנה ימוזגו לרשימה אחת ממוינת.

(vi) מיון ערימה : אלגוריתם מיון הממיין אלמנטים באמצעות מבנה נתונים הנקרא heap.

זה אלגוריתם הסיווג:

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

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

האלגוריתם למיון רדיקס הוא:

פיתון קו חדש
  1. קבע כמה ספרות כלולות ברכיב הגדול ביותר של רישום הקלט.
  2. אתחול משתנה, נניח מקום ספרתי, ל-1, המייצג את מקום הספרות הנוכחי.
  3. צור רשימה ריקה עבור כל ערך ספרתי אפשרי מ-0 עד 9.
  4. חזור על רשימת הקלט והוסף כל רכיב לרשימה המתאימה בהתבסס על הערך של מקום הספרות הנוכחי.
  5. שרשרת את כל הרשימות יחד כדי ליצור את הרשימה החדשה לפי סדר רשימות הספרות.
  6. הכפל digitPlace ב-10 כדי לעבור למקום הספרות הבא.
  7. חזור על שלבים 4-6 עבור כל מקום של ספרה עד שכל הספרות באלמנט הגדול ביותר ייחשבו.
  8. הרשימה הסופית תמוין בסדר עולה לפי ספרות האלמנטים.
  9. החזר את הרשימה הממוינת הסופית.

2. אלגוריתמי חיפוש

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

ישנם סוגים רבים של אלגוריתמי חיפוש.

הם:-

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

אלגוריתם לחיפוש ליניארי:-

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

(ii) חיפוש בינארי : אלגוריתם חיפוש שפועל על ידי פיצול הרישום לחצאים וחיפושים בתוך החצאים הללו צפוי לכלול את האלמנט.

אלגוריתם לחיפוש בינארי:-

  1. קלט: רשימה ממוינת של n אלמנטים ואלמנט יעד x.
  2. אתחול משתנים: הגדר את האינדקס הנמוך ל-0, את האינדקס הגבוה ל-n-1, ואת האמצע ל-(נמוך+גבוה)/2.
  3. התחל לולאה: בעוד שהאינדקס הנמוך קטן או שווה לאינדקס הגבוה, חזור על השלבים הבאים.
  4. השווה את האלמנט האמצעי עם x: אם האלמנט האמצעי שווה ל-x, החזר את האינדקס האמצעי.
  5. עדכן את האינדקס הנמוך או הגבוה: אם x גדול מהאלמנט האמצעי, הגדר את האינדקס הנמוך לאמצע + 1. אחרת, הגדר את האינדקס הגבוה לאמצע - 1.
  6. עדכן את האינדקס האמצעי: אמצע = (נמוך+גבוה)/2.
  7. סוף הלולאה: אם האינדקס הנמוך גדול מהאינדקס הגבוה, אז x אינו ברשימה, והאלגוריתם מחזיר כשל.
  8. פלט: האינדקס של x ברשימה או הודעת כשל.

(iii) חיפוש עומק-ראשון : אלגוריתם חיפוש שבוחן כל ענף ככל שניתן לפני שמסתובבים.

ההנחיות הבאות חלות על חיפוש עומק ראשון:

  1. בחר את קודקוד ההתחלה או הצומת של הגרף כדי להתחיל איתו.
  2. הוסף סימן ביקור לקודקוד הראשון.
  3. מקם ישירות את הקודקוד ההתחלתי בערימה.
  4. עד שהמחסנית תתרוקן, חזור על הפעולות הבאות: -
    • הסר את הקודקוד העליון של הערימה.
    • סמן כמו ביקר והכנס לערימה כל שכן שלא ביקר של הקודקוד המוקפץ.
  5. המשך בתהליך זה עד לביקור בכל הקודקודים בגרף.
  6. לאחר ביקור בכל הקודקודים, האלגוריתם הושלם, וחיפוש עומק ראשון מתבצע על הגרף.

(iv) חיפוש רוחב ראשון : אלגוריתם חיפוש שחוקר את כל השכנים של צומת לפני המעבר לרמה הבאה.

האלגוריתם לחיפוש ברוחב ראשון הוא:-

  1. התחל עם צומת השורש או המצב ההתחלתי.
  2. הוסף את צומת השורש לתור.
  3. בדוק אם התור ריק; אם כן, הפסק את האלגוריתם.
  4. קח את האלמנט הראשון מהתור וסמן אותו כביקור.
  5. הגבר את הצומת העכשווי על ידי הוספת כל השכנים שלא ביקרו בו לתור.
  6. עד לאיתור הצומת הרצוי או שהתור ריק, חזור על שלבים 3 עד 5.
  7. החזר את הנתיב מהמצב המקדים למצב היעד אם נמצא צומת המטרה.
  8. סיים את קבוצת הכללים ודווח שמצב המטרה לא זוהה אם התור ריק.

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

חשוב שהמערך יתפזר באופן שווה. אחרת, זה אלגוריתם.

זה עובד כצפוי.

ניתן לסכם את האלגוריתם באופן הבא.

  1. קבל את רשימת הקלט ואת ערך המפתח לחיפוש.
  2. אתחול המשתנים התחתונים והעליונים במדד הראשון והאחרון של הרשימה.
  3. אם הערך התחתון קטן או שווה לערך גבוה יותר, אז :-
    1. חשב את המיקום המשוער באמצעות הנוסחה הבאה:
      pos = נמוך + ((גבוה - נמוך) / (ארר[גבוה] - ערר[נמוך])) * (x - ערר[נמוך]).
    2. החזר את המיקום אם ערך המיקום המשוער הוא ערך מפתח.
    3. ג) אם ערך המיקום המשוער נמוך מערך המפתח, הגדר אותו נמוך יותר.
      מיקום + 1.
    4. ד) אם הערך של המיקום המשוער גדול מהערך הגדר מפתח, מיקום - 1 למעלה.
  4. אם ערך המפתח לא נמצא, החזר -1 כדי לציין שהערך אינו ברשימה.

(vi) חיפוש קפיצה : שיטת חיפוש החוזרת על הרשימה בשלבים באורך קבוע עד שהיא מוצאת את האלמנט הרלוונטי או קובעת שהוא אינו קיים יותר.

אלגוריתם חיפוש הקפיצה הוא כדלקמן:

  1. ראשית, הגדר את גודל הקפיצה לשורש הריבועי של מספר רכיבי המערך.
  2. מגדיר משתנה בשם 'נוכחי' לאלמנט הראשון של המערך.
  3. חוזר על המערך על ידי קפיצה לפי גודל קפיצה תוך הגדלה של משתנה שנקרא 'קפיצה'.
  4. עברו לזינוק הבא אם האלמנט הקיים קטן מהאלמנט הרצוי.
  5. אם האלמנט הנוכחי גדול מאלמנט היעד, בצע חיפוש ליניארי בין האלמנט הנוכחי לאלמנט הקפיצה הקודם כדי למצוא את אלמנט היעד.
  6. אם רכיב המטרה לא נמצא במערך, הוא מחזיר -1 כדי לציין שהוא לא נמצא במערך.
  7. אם האלמנט נמצא, הוא מחזיר את האינדקס של האלמנט במערך.

3. אלגוריתמי גרפים

התמיכה של C במצביעים ובמבני נתונים כגון מערכים ורשימות מקושרות הופכת אותו למתאים להטמעת אלגוריתמים המבצעים מניפולציות על גרפים, כגון מציאת הנתיב הקצר ביותר בין שני צמתים בגרף.

1 מיליון כמה 0

ישנם סוגים שונים של אלגוריתמי גרפים.

הם:-

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

4. אלגוריתמים קריפטוגרפיים

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

ישנם סוגים שונים של אלגוריתמי הצפנה.

הם:-

    אלגוריתמי Hash: אלגוריתמים אלה מייצרים פלטים בגודל קבוע (hash) מכניסות בגודל שרירותי. דוגמאות כוללות MD5, SHA-1 ו-SHA-2.אלגוריתמי מפתח סימטריים: שלבי ההצפנה והפענוח באלגוריתמים כאלה משתמשים באותו מפתח פרטי. AES, DES ו-Blowfish הם כמה דוגמאות.אלגוריתמי מפתח אסימטריים: מפתח ציבורי ומפתח לא ציבורי משמשים בשיטות אלו כמפתחות נפרדים להצפנה ולפענוח. כמה דוגמאות כוללות RSA, ECC ו-DSA.אלגוריתמים להחלפת מפתחות: אלגוריתמים אלו מאפשרים לשני צדדים להחליף מפתחות בערוץ לא מאובטח בצורה מאובטחת. לדוגמה, אנו יכולים להזכיר את דיפי-הלמן ו-Eliptic Curve Diffie-Hellman.

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

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

הם:-

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

חסרונות האלגוריתם

אלגוריתמים שימושיים מאוד לתכנות, אך לאלגוריתם יש חסרונות.

הם:-

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