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