logo

Dizideki Bir Öğeyi Aramak için C Programı

Bu yazımızda bir dizideki bir elemanı aramak için kullanılan C programını farklı yolları ve örnekleriyle ele alacağız.

Dizi Nedir?

A veri yapısı denir sıralamak sabit uzunlukta bir dizi özdeş türde öğeyi tutar. İndeksleme verimli erişim sağladığı için veri koleksiyonlarını depolamak ve yönetmek için sıklıkla kullanılır.

Örn: tamsayılar[] = {10, 20, 30, 40, 50};

Dizideki Bir Öğeyi Aramak

Bilgisayar programlamadaki tipik bir işlem, bir dizideki belirli bir öğeyi aramaktır. İster bir öğenin dizinini belirleyen belirli bir değerin varlığını araştırıyor olun, ister bir öğenin var olup olmadığını doğruluyor olun, etkili arama algoritmaları kullanılarak kodunuzun verimliliği büyük ölçüde artırılabilir. Bu makalede C programlama dilini kullanarak bir dizideki öğeleri aramak için kullanılan birçok yöntem tartışılacaktır.

Bir Dizideki Bir Öğeyi Aramanın başlıca iki yolu vardır:

1. Doğrusal Arama

Bir dizi veya listedeki belirli bir öğeyi bulmak için kullanılan basit bir arama stratejisine denir. doğrusal arama bazen şu şekilde anılır: sıralı arama . Bir dizi bulmak için her dizi üyesini hedef değerle karşılaştırarak çalışır. kibrit veya çapraz tüm dizi yinelemeli olarak.

Doğrusal aramanın temel adımları aşağıdaki gibidir:

    Başlangıç dizinin en üstteki öğeleriyle.
  1. Hedef değer mevcut öğeyle karşılaştırılmalıdır.
  2. Geçerli öğe istenen değerle eşleşirse arama başarılı olur ve ardından algoritma, öğenin dizinini veya istenen herhangi bir çıktıyı döndürebilir.
  3. Geçerli öğe istenen değerle eşleşmiyorsa dizideki aşağıdaki öğeye gidin.
  4. Bir eşleşme yapılana veya dizinin sonuna ulaşılana kadar 2-4. adımları tekrarlayın.

Program:

 #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. İkili Arama

Ikili arama Bu teknik, sıralanmış bir dizide belirli bir öğeyi hızlı bir şekilde bulmak için kullanılır. sıralamak veya liste . Bir kullanır böl ve fethet strateji Hedef öğenin yeri tespit edilene veya yok olduğu tespit edilene kadar arama alanı periyodik olarak ikiye bölünür.

İkili arama şu şekilde çalışır:

  1. Temel olarak sıralanmış bir diziye veya listeye sahip olun.
  2. İki işaretçi oluşturun, sol Ve Sağ , başlangıç ​​değerleri dizinin ilk ve son üyelerini işaret edecek şekilde.
  3. Kullanmak (sol + sağ) / 2 merkez elemanın indeksini almak için.
  4. Hedef değeri ortadaki öğeyle karşılaştırın.
    1. Eğer eşitlerse arama başarılı olur ve program geri dönebilir. dizin veya gerekli başka bir sonuç.
    2. Sağ işaretçi, önceki öğeye taşınmalıdır. orta eleman ortadaki öğe hedef değerden büyükse.
    3. Taşı sol işaretçi aşağıdaki öğeye orta eleman ortadaki elemanın değeri hedef değerden küçükse.
  5. Adımlar 3 Ve 4 hedef eleman bulunana veya sol işaretçi sağ işaretçiyi geçene kadar tekrarlanmalıdır.
  6. İstenilen öğe bulunamıyorsa dizide yoktur.

Program:

 #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></=>