Blessing Venus

선형탐색(Linear Search) 본문

알고리즘

선형탐색(Linear Search)

Blessing Venus 2018. 5. 28. 19:31


선형탐색(Linear Search)


선형탐색 말이 좀 어려워 보이죠.

하지만 의미는 쉽습니다.

별거 없이 루프를 돌면서 수열의 첫번째부터 마지막번째까지 다 샅샅히 비교하고 대입하는 탐색입니다.


정말 쉬운 탐색이지만 더 쉽게 설명하기 위해서 아래의 예시를 들어 보겠습니다.



어떤 판타지 왕국에서 왕궁기사단 시험이 치러지고 있습니다.

기사단장은 참가한 기사지망생들에게 문제를 내었습니다.

만약 10개의 던전이 존재하고 던전마다 얻을 수 있는 아이템의 등급이 각각 다르다.

너희들은 이 던전들 중에서 가장 높은 등급의 아이템을 얻을 수 있는 던전을 찾는 방법이 무엇이라 생각하는가?

그 중 어떤 기사지망생이 존나게 박력있게 말합니다.

"그냥 첫번째 던전부터 마지막 던전까지 쳐들어가서 아이템 뭐 나오는지 다 확인하면 되지 않습니까?"


그렇습니다.

이것이 선형탐색입니다.

선형탐색은 배열의 요소를 순차적으로 꺼내어 비교하여 값을 찾는 탐색 알고리듬입니다.


아래는 예제로 간략하게 만들어본 선형탐색을 활용한 최소값 최대값 찾는 코드입니다.


public class LinearSearch {
       int[] array = null;
       
       public void setDataArray(int[] arr) {
              this.array = arr;
       }
       
       /**
        * 선형탐색으로 최소값을 구한다.
        * @return
        */
       public int searchMin() {
              int min = array[0];
              
              for(int i=1; i<array.length; i++) {
                     if(min > array[i]) {
                           min = array[i];
                     }
              }
              
              return min;
              
       }
       
       /**
        * 선형탐색으로 최대값을 구한다.
        * @return
        */
       public int searchMax() {
              int max = array[0];
              
              for(int i=1; i<array.length; i++) {
                     if(max < array[i]) {
                           max = array[i];
                     }
              }
              
              return max;
       }      

}




'알고리즘' 카테고리의 다른 글

삽입 정렬(Insert Sort)  (0) 2018.05.30
선택정렬(Selection Srot)  (0) 2018.05.29
버블정렬(Bubble Sort)  (0) 2018.05.28
Comments