[알고리즘, 자료구조] 선형검색 (SeqSearch)
2024. 6. 19. 00:46ㆍWebBack/알고리즘
응용 프로그램 : 배열 앞에서 순서대로 입력된 값을 검색하여 찾는 프로그램
종료 조건 :
1) 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우
2) 검색할 값과 같은 요소를 발견한 경우
구현 방법:
1. 요솟값을 입력받는다.
2. 각 배열에 저장될 값을 랜덤으로 입력한다. (for문, random rand = new Random() 이용)
3. 검색할 값을 입력받는다.
4. 배열, 요솟값, 검색값을 매개 변수로 하는 클래스 메서드 구현
5. 클래스 메서드 실행
출력 예시:
------------
요솟수: 7
x[0] : 6
x[1] : 4
x[2] : 3
x[3] : 2
x[4] : 1
x[5] : 2
x[6] : 8
검색할 값: 2
그 값은 4번째 위치에 있습니다.
-------------
구현 결과
package Algorithm;
import java.util.Random;
import java.util.Scanner;
public class SeqSearch {
static int seqSearch(int[] x, int n, int key){
int i = 0;
//key값을 찾는 무한반복문
while(true){
if(i == n) return -1; // 종료 조건 1
if(x[i] == key) return i; //종료 조건 2
i++;
}
}
public static void main(String[] args) {
//요솟값을 입력받는다.
Scanner sc = new Scanner(System.in);
System.out.print("요솟수 : ");
int n = sc.nextInt();
//요솟수만큼의 길이를 가진 배열 형성
int[] x = new int[n];
//각 배열에 값 넣기
for(int i = 0; i < x.length; i++){
Random rand = new Random();
x[i] = rand.nextInt(8) + 1; //rand는 0에서 8사이의 값 -> 1에서 9사이의 값
System.out.printf("x[%d] = %d\n", i, x[i]);
}
System.out.print("검색할 값: ");
int key = sc.nextInt();
//검색 시작
int idx = seqSearch(x, n, key);
if(idx == -1)
System.out.println("값이 존재하지 않습니다.");
else
System.out.printf("그 값은 x[%d]의 위치에 있습니다.", idx);
}
}
문제점
1) key값을 검색할 때에 if를 두 번 검색해야함
2) key값이 여러개 존재해도 모두 반환하지 않음
'WebBack > 알고리즘' 카테고리의 다른 글
[배열과 리스트] 숫자의 합 구하기 (0) | 2024.07.16 |
---|---|
[알고리즘, 자료구조] 자연정렬된 키워드를 검색(Arrays.binarySearch) (0) | 2024.06.24 |
[알고리즘, 자료구조] Arrays.binarySearch에 의한 이진검색 (0) | 2024.06.24 |
[알고리즘, 자료구조] 이진 검색 (0) | 2024.06.22 |
[알고리즘, 자료구조] 보초법(sentinel method) (0) | 2024.06.20 |