검색알고리즘 2

[CS50] 선형 검색

이번에는 주어진 배열에서 선형 검색으로 값을 찾는 방법을 공부해보려고 합니다. 전화번호부 같이 한개의 배열이 아닌 여러 개의 배열이 있는 경우 한 배열의 특정 속성 값을 찾고 동일한 위치의 다른 배열의 속성 값을 출력하는 방법을 공부해보도록 하겠습니다. 선형 검색은 지난 포스팅에서 정리했듯이 처음부터 끝까지 원하는 원소를 찾을 때까지 차례대로 검색하는 것을 말합니다. 선형 검색의 정확성이나 효율성을 따져본다면 처음부터 끝까지 모든 자료를 확인한다는 것에 정확하다고는 할 수 있지만 효율적이지는 않습니다. 만약 100만 개의 원소가 있는 리스트에 원하는 자료가 가장 마지막에 있다거나 리스트 안에 없다면 이처럼 효율성이 매우 떨어지는 작업은 없을 겁니다. 따라서 선형 검색은 자료가 정렬되어있지 않거나 그 어떤..

[CS50] 검색 알고리즘

지금까지는 메모리의 구조, 자료형 같은 기본적인 개념을 공부했지만 이번 포스팅부턴 지금껏 배운 내용을 활용해서 검색, 정렬 등과 같은 문제를 풀어내는 알고리즘에 대해 공부하고 정리해보도록 하겠습니다. 검색 알고리즘은 선형 검색, 이진 검색, 해시 검색 이렇게 3가지가 있는데 이중 선형 검색과 이진 검색에 대해 공부해보도록 하겠습니다. 선형검색 만약 10 23 6 1 2 50 이렇게 정렬이 되지 않은 6개의 숫자가 보이지 않게 있을 때 50을 찾아내는 방법엔 어떤 것이 있을까요? □□□□□□ 이렇게 박스 안에 들어있다고 가정한다면 당연히 정렬도 되어있지 않은 수니까 맨 처음 □부터 끝까지 하나하나 열어서 살펴보는 방법밖엔 없습니다. 만약 여기서 50이 가장 뒤에 있다면 모든 박스를 다 열어봐야 할 겁니다...