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. 이진 검색

그만큼 이진 검색 정렬된 항목에서 특정 요소를 빠르게 찾는 데 사용되는 기술입니다. 정렬 또는 목록 . 그것은 분할 정복 전략 , 대상 요소를 찾거나 없을 때까지 검색 영역을 주기적으로 절반으로 줄입니다.

이진 검색이 작동하는 방식은 다음과 같습니다.

  1. 정렬된 배열이나 목록을 기본으로 사용하세요.
  2. 두 개의 포인터를 설정하고, 왼쪽 그리고 오른쪽 , 초기 값은 배열의 첫 번째 및 끝 멤버를 가리킵니다.
  3. 사용 (왼쪽 + 오른쪽) / 2 중앙 요소의 인덱스를 얻으려면.
  4. 목표값을 중간 요소와 비교합니다.
    1. 동일하면 검색이 성공하고 프로그램은 다음을 반환할 수 있습니다. 색인 또는 기타 필요한 결과.
    2. 오른쪽 포인터는 이전 요소로 이동되어야 합니다. 중간 요소 중간 요소가 목표 값보다 큰 경우.
    3. 이동 왼쪽 포인터 다음 요소에 중간 요소 중간 요소의 값이 목표 값보다 작은 경우.
  5. 단계 그리고 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></=>