introduction searching algorithms c
C ++의 검색 알고리즘 개요.
우리는 일상 생활에서 무언가 또는 다른 것을 계속 찾고 있습니다. 일상 생활과 마찬가지로 소프트웨어 전문가로서 우리는 컴퓨터에서 정보를 검색해야합니다. 정보 검색은 정보 검색에 많은 시간을 낭비 할 여유가 없으므로 신속하게 수행해야합니다.
따라서 주어진 정보를 짧은 시간에 검색하고 사용자에게 제공하여 사용자가 다른 작업을 진행할 수있는 효율적인 검색 기술 또는 알고리즘이 필요합니다.
=> 전체 C ++ 자습서 목록을 보려면 여기를 방문하십시오.
학습 내용 :
검색 기법
정보 검색에 주로 사용되는 두 가지 주요 검색 기술이 있습니다.
여기에는 다음이 포함됩니다.
- 선형 검색
- 이진 검색
이 자습서에서는 이러한 두 가지 검색 기술을 자세히 살펴 봅니다.
선형 검색
이것은 가장 기본적인 검색 기술이며 구현하기도 더 쉽습니다. 선형 검색에서 검색 할 키는 데이터 수집의 모든 요소와 선형 적으로 비교됩니다. 이 기술은 선형 데이터 구조에서 효과적으로 작동합니다.
다음 배열을 고려해 보겠습니다.
위는 7 개 요소의 배열입니다. 키 = 23을 검색하려면 0부터 시작합니다.일요소, 키 값은 각 요소와 비교됩니다. 키 요소가 배열의 요소와 일치하면 해당 특정 위치가 반환됩니다. 이 경우 위치는 키-값이 해당 위치의 값과 일치하므로 4가 반환됩니다.
아래에서 C ++ 및 Java 언어를 사용하여 선형 검색을 구현했습니다.
C ++ 구현
#include #include using namespace std; int main() { int myarray(10) = {21,43,23,54,75,13,5,8,25,10}; int key,loc; cout<<'The input array is'<key; for (int i = 0; i<10; i++) { if(myarray(i) == key) { loc = i+1; break; } else loc = 0; } if(loc != 0) { cout<<'Key found at position '< 산출:
3 년 경력의 pl SQL 인터뷰 질문
입력 배열은
21 43 23 54 75 13 5 8 25 10
검색 할 키 입력 : 3
배열에서 주어진 키를 찾을 수 없습니다.
입력 배열은
21 43 23 54 75 13 5 8 25 10
검색 할 키 입력 : 75
배열의 위치 5에서 발견 된 키
자바 구현
import java.util.*; import java.lang.*; import java.io.*; public class Main { public static void main(String() args) { int() myarray = {21,43,23,54,75,13,5,8,25,10}; int key,location=0; Scanner sc = new Scanner(System.in); System.out.println('The input array is'); for(int i=0;i<10;i++){ System.out.print(myarray(i)+' '); } System.out.println('
'); System.out.println('Enter key'); key = sc.nextInt(); for(int i = 0; i<10; i++) { if(myarray(i)==key) { location = i+1; break; } else location = 0; } if(location != 0) { System.out.println('key found at location ' + location); } else System.out.println('Key not found'); } }
산출:
입력 배열은
21 43 23 54 75 13 5 8 25 10
Enter 키
2. 3
위치 3에서 발견 된 키
선형 검색은 정렬되거나 정렬되지 않은 요소가있는 모든 선형 데이터 구조에서 수행 할 수 있습니다. 그러나 요소가 너무 많고 각 요소를 키 값과 비교하여 키 요소가 끝을 향하면 시간이 더 오래 걸립니다.
이진 검색
이진 검색은 '분할 및 정복'기술을 사용하여 키를 검색하는 기술입니다. 정렬 된 선형 요소 목록에서 작동합니다. 정렬 된 목록은 이진 검색이 작동하기위한 기본 요구 사항입니다.
이진 검색 방법에서는 목록이 반복적으로 절반으로 나뉘며 키를 찾을 때까지 목록의 양쪽에서 키 요소를 검색합니다.
예를 들어,10 개의 요소로 구성된 다음과 같은 정렬 된 배열을 사용하겠습니다.
배열에서 키 = 21을 검색한다고 가정 해 보겠습니다.
Windows 7 용 원격 데스크톱 소프트웨어
배열의 중간 위치를 계산해 보겠습니다.
중간 = 0 + 9 / 2 = 4
예를 들어,10 개의 요소로 구성된 다음과 같은 정렬 된 배열을 사용하겠습니다.
키 = 21
먼저 키 값을 (mid) 요소와 비교합니다. mid = 21의 요소 값을 찾습니다.
따라서 우리는 key = (mid)를 찾습니다. 따라서 열쇠가 발견됩니다.
키 = 25
먼저 키 값을 mid와 비교합니다. 그래서 (21<25), we will directly search for the key in the upper half of the array.
이제 다시 배열의 위쪽 절반에 대한 중간을 찾을 것입니다.
자바에서 해시 테이블을 구현하는 방법
중간 = 4 + 9 / 2 = 6
위치 (mid)의 값 = 25
이제 핵심 요소와 중간 요소를 비교합니다. 따라서 (25 == 25), 따라서 (mid) 위치에서 키를 찾았습니다.
배열을 반복적으로 나누고 키 요소를 중간과 비교하여 키를 검색 할 절반을 결정합니다.
다음은 이진 검색을위한 C ++ 및 Java 구현입니다.
C ++ 구현
#include #include using namespace std; int binarySearch(int myarray(), int beg, int end, int key) { int mid; if(end >= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) key; location = binarySearch(myarray, 0, 9, key); if(location != -1) { cout<<'Key found at location '< 산출:
입력 배열은
5 8 10 13 21 23 25 43 54 75
검색 할 키를 입력하십시오 : 21
위치 5에서 발견 된 키
자바 구현
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main(String() args) { int() myarray = {5,8,10,13,21,23,25,43,54,75}; int key, location = -1; System.out.println('The input array is'); for(int i=0;i= beg) { mid = (beg + end)/2; if(myarray(mid) == key) { return mid+1; } else if(myarray(mid) 산출:
입력 배열은
5 8 10 13 21 23 25 43 54 75
검색 할 키를 입력하세요.
이십 일
키의 위치는 5입니다.
이진 검색은 시간과 정확성 측면에서 더 효율적입니다. 선형 검색 기술은 더 번거롭고 느리기 때문에 거의 사용되지 않습니다. 이진 검색은 선형 검색에 비해 훨씬 빠릅니다.
결론
검색 기술은 사용자가 정보 처리의 다른 작업을 진행할 수 있도록 컴퓨터에 저장된 정보를 검색하는 데 도움이됩니다. 선형 검색 기술은 간단하고 쉽지만 광범위하게 사용되지는 않습니다.
이진 검색 기술은 훨씬 빠르고 효율적이므로 광범위하게 사용됩니다.
다음 튜토리얼에서는 다양한 정렬 기술을 자세히 살펴볼 것입니다.
=> 여기에서 완벽한 C ++ 교육 가이드를 확인하십시오.
추천 도서
- Java 프로그래밍 언어 소개-비디오 자습서
- Appium Studio 소개 : 주요 이점 및 기능
- STL의 알고리즘
- 최고의 무료 C # 튜토리얼 시리즈 : 초보자를위한 최고의 C # 가이드
- JMeter 비디오 1 : 소개, JMeter 다운로드 및 설치
- Python 소개 및 설치 프로세스
- 유닉스 란 무엇인가 : 유닉스에 대한 간략한 소개
- Micro Focus LoadRunner 소개-LoadRunner를 사용한 부하 테스트 자습서 # 1