SIDES/Algorithm

[Algorithm] 선형 검색 Sequential Search

Jelly 젤리 2022. 3. 12. 17:26

기초 복습

배열 요소들의 합을 구하는 과정

public class SumofArray {
    public static void main(String []args){
        int []a = {10,20,30,40,50,60,70,80,90,100};
        int sum = 0;
        int i = 0 ;

        for(i=0; i<= a.length - 1 ; i++ ){
            sum += a[i];
        }
    System.out.print("배열 a의 요소들의 합은: "+sum+"입니다.");
    }
}

 

실습

임의의 배열에서 원하는 데이터값을 찾는 알고리즘

 

1. 첫 번째 코드: 여기서는 그냥 값 비교를 하여 값이 위치한 index만을 출력

2. 두 번째 코드: 여기서는 for문을 활용하여 배열에서 탐색하는 방식

 

 

새로 알게 된 점:

순차검색 알고리즘은 배열을 "임의의"배열로 보고 검색하는 방식.

"임의의" 배열이 아닌 "정렬된"배열인 경우 이진검색이 더 빠르기 때문에 논외

 

for문에서 배열의 길이만큼 반복하면서 position값이 설정해 둔 값과 일치한 경우

동일한 값 발견하자마자 for문이 종료됨:

 

일부러 배열의 5번째와 10번째 값을 동일하게 92로 주고 오류를 확인해가면서 코드를 짜봤는데

난 처음에 for(i = 0 ; i <array.length ; i++)이렇게만 주고 92를 검색했더니 10번째라고만 나왔다.

 => 이렇게 짜면 그냥 무조건끝까지 돌아감

그런데 여기서 for(i = 0; i <array.length ; position == -1; i++)로 조건을 주면 5번쨰로 뜨는 것을 확인..

 => 이렇게 짜면 돌다가 발견한 값에 의해 for문 탈출

 

순차검색은 무조건 첫 번째 동일한 값이 나오면 종료되게끔 짜기 떄문에 책을 읽어보니

검색만 하는것이 아니라 그 값을 for문에서 탈출하도록 세팅해주는 것이 필요하기 때문에 &&연산자로 조건을 하나 더 주었던 것..!!

728x90