logo

תוכנית C לחיפוש אלמנט במערך

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

מה זה מערך?

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

לדוגמה: intnumbers[] = {10, 20, 30, 40, 50};

חיפוש אלמנט במערך

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

יש בעיקר שתי דרכים לחפש אלמנט במערך:

1. חיפוש לינארי

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

יצירת ג'אווה

השלבים הבסיסיים בחיפוש לינארי הם כדלקמן:

    הַתחָלָה עם האלמנטים העליונים ביותר של המערך.
  1. יש להשוות את ערך היעד לרכיב הנוכחי.
  2. החיפוש מצליח אם האלמנט הנוכחי תואם לערך המבוקש, ואז האלגוריתם יכול להחזיר את האינדקס של האלמנט או כל פלט רצוי אחר.
  3. עבור אל האלמנט הבא במערך אם האלמנט הנוכחי אינו תואם לערך הרצוי.
  4. עד שתתבצע התאמה או הגעה לסוף המערך, חזור על שלבים 2-4.

תכנית:

 #include int linearSearch(int arr[], int n, int target) { for (int i = 0; i<n; i++) { if (arr[i]="=" target) return i; the index target is found } -1; -1 not int main() arr[]="{5," 2, 8, 12, 3}; n="sizeof(arr)" sizeof(arr[0]); calculate number of elements in array result="linearSearch(arr," n, target); (result="=" -1) printf('element found
'); else at %d
', result); 0; < pre> <p> <strong>Output:</strong> </p> <pre> An element found at index 2 </pre> <h3>2. Binary Search</h3> <p>The <strong> <em>binary search</em> </strong> technique is utilized to quickly locate a specific element in a sorted <strong> <em>array</em> </strong> or <strong> <em>list</em> </strong> . It uses a <strong> <em>divide-and-conquer</em> </strong> <strong> <em>strategy</em> </strong> , periodically cutting the search area in half until the target element is located or found to be absent.</p> <p>This is how binary search functions:</p> <ol class="points"> <li>Have a sorted array or list as a base.</li> <li>Establish two pointers, <strong> <em>left</em> </strong> and <strong> <em>right</em> </strong> , with their initial values pointing to the array&apos;s first and end members.</li> <li>Use <strong> <em>(left + right) / 2</em> </strong> to get the index of the center element.</li> <li>Compare the target value to the middle element. <ol class="pointsa"> <li>The search is successful if they are equal, and then the program can return the <strong> <em>index</em> </strong> or any other required result.</li> <li>The right pointer should be moved to the element preceding the <strong> <em>middle element</em> </strong> if the middle element is greater than the target value.</li> <li>Move the <strong> <em>left pointer</em> </strong> to the element following the <strong> <em>middle element</em> </strong> if the middle element&apos;s value is less than the target value.</li> </ol></li> <li>Steps <strong> <em>3</em> </strong> and <strong> <em>4</em> </strong> should be repeated until the target element is located or the left pointer exceeds the right pointer.</li> <li>The desired element is not in the array if it cannot be located.</li> </ol> <p> <strong>Program:</strong> </p> <pre> #include int binarySearch(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right-left) 2; if (arr[mid]="=" target) return mid; the index target is found } < left="mid" 1; else right="mid-1;" -1; -1 not main() arr[]="{2," 5, 8, 12, 20, 23, 28}; n="sizeof(arr)" sizeof(arr[0]); calculate number of elements in array result="binarySearch(arr," 0, - 1, target); (result="=" -1) printf('element found
'); at %d
', result); 0; pre> <p> <strong>Output:</strong> </p> <pre> An element found at index 4 </pre> <hr></=></pre></n;>

2. חיפוש בינארי

ה חיפוש בינארי הטכניקה משמשת לאיתור מהיר של אלמנט מסוים במיון מַעֲרָך אוֹ רשימה . הוא משתמש ב- a הפרד ומשול אִסטרָטֶגִיָה , חיתוך מעת לעת את אזור החיפוש לחצי עד שאלמנט היעד נמצא או נמצא שהוא נעדר.

כך פועל החיפוש הבינארי:

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

תכנית:

 #include int binarySearch(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right-left) 2; if (arr[mid]="=" target) return mid; the index target is found } < left="mid" 1; else right="mid-1;" -1; -1 not main() arr[]="{2," 5, 8, 12, 20, 23, 28}; n="sizeof(arr)" sizeof(arr[0]); calculate number of elements in array result="binarySearch(arr," 0, - 1, target); (result="=" -1) printf(\'element found
\'); at %d
\', result); 0; pre> <p> <strong>Output:</strong> </p> <pre> An element found at index 4 </pre> <hr></=>