이 기사에서는 다양한 방법과 예제를 통해 배열의 요소를 검색하는 C 프로그램에 대해 설명합니다.
배열이란 무엇입니까?
ㅏ 데이터 구조 라고 정렬 동일한 유형의 고정된 길이의 일련의 항목을 보유합니다. 인덱싱을 사용하면 효율적인 액세스가 가능하므로 데이터 컬렉션을 저장하고 조작하는 데 자주 사용됩니다.
예: intnumbers[] = {10, 20, 30, 40, 50};
배열의 요소 검색
컴퓨터 프로그래밍의 일반적인 작업은 배열에서 특정 요소를 찾는 것입니다. 요소의 인덱스를 찾는 특정 값의 존재를 검색하든 요소가 존재하는지 확인하든 효율적인 검색 알고리즘을 사용하면 코드 효율성이 크게 향상될 수 있습니다. 이 기사에서는 C 프로그래밍 언어를 사용하여 배열의 요소를 검색하는 다양한 방법에 대해 설명합니다.
배열의 요소를 검색하는 방법에는 주로 두 가지가 있습니다.
정적 자바
1. 선형 검색
배열이나 목록에서 주어진 요소를 찾는 데 사용되는 간단한 검색 전략을 호출합니다. 선형 검색 , 때로는 순차 검색 . 각 배열 구성원을 대상 값과 비교하여 다음을 찾는 방식으로 작동합니다. 성냥 또는 횡단 전체 배열을 반복적으로 수행합니다.
선형 탐색의 기본 단계는 다음과 같습니다.
- 목표 값은 현재 요소와 비교되어야 합니다.
- 현재 요소가 요청된 값과 일치하면 검색이 성공한 것이며, 그러면 알고리즘이 요소의 인덱스 또는 기타 원하는 출력을 반환할 수 있습니다.
- 현재 요소가 원하는 값과 일치하지 않으면 배열의 다음 요소로 이동합니다.
- 일치하는 항목이 있거나 배열 끝에 도달할 때까지 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'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'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. 이진 검색
그만큼 이진 검색 정렬된 항목에서 특정 요소를 빠르게 찾는 데 사용되는 기술입니다. 정렬 또는 목록 . 그것은 분할 정복 전략 , 대상 요소를 찾거나 없을 때까지 검색 영역을 주기적으로 절반으로 줄입니다.
이진 검색이 작동하는 방식은 다음과 같습니다.
- 정렬된 배열이나 목록을 기본으로 사용하세요.
- 두 개의 포인터를 설정하고, 왼쪽 그리고 오른쪽 , 초기 값은 배열의 첫 번째 및 끝 멤버를 가리킵니다.
- 사용 (왼쪽 + 오른쪽) / 2 중앙 요소의 인덱스를 얻으려면.
- 목표값을 중간 요소와 비교합니다.
- 동일하면 검색이 성공하고 프로그램은 다음을 반환할 수 있습니다. 색인 또는 기타 필요한 결과.
- 오른쪽 포인터는 이전 요소로 이동되어야 합니다. 중간 요소 중간 요소가 목표 값보다 큰 경우.
- 이동 왼쪽 포인터 다음 요소에 중간 요소 중간 요소의 값이 목표 값보다 작은 경우.
- 단계 삼 그리고 4 대상 요소를 찾거나 왼쪽 포인터가 오른쪽 포인터를 초과할 때까지 반복해야 합니다.
- 원하는 요소를 찾을 수 없으면 배열에 없습니다.
프로그램:
#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></=>
=>