[ java ] 검색 알고르즘
페이지 정보
작성자 웹지기 댓글 0건 조회 1,618회 작성일 20-12-16 12:30본문
Sequential sesarch
- 가장 단순한 검색 방법으로 원소의 정렬이 필요없다. 하지만 리스트의 길이가 길어진다.
- 처음부터 순차적으로 검색하는 알고리즘
import java.util.Arrays;
import java.util.Arrays;
public class Exam07_Sequential_search {
public static void main(String[] args) {
int[] arr = {13, 35, 15, 11, 26, 72, 78, 13, 61, 90};
System.out.println(Arrays.toString(arr));
int search = 78;
for(int i=0; i<arr.length; i++) { //처음부터 차례대로 검색
if(arr[i] == search) {
System.out.println(search+"는 "+i+"번째 숫자입니다.");
break;
}
}
}
}
Binary search
- 정렬이 되어있는 상태의 데이터 중에서 검색하는 알고리즘
- 리스트의 중간 값을 정해 크고 작음을 비교해 검색하는 알고리즘
import java.util.Arrays;
public class Exam08_Binary_search {
public static void main(String[] args) {
int[] arr = {1, 7, 12, 15, 26, 50, 56, 123, 611, 910};
System.out.println(Arrays.toString(arr));
int lowIdx = 0;
int highIdx = arr.length-1;
int search = 15;
while(true) {
//검색을 시작과 끝의 중간지점에서 시작
int midIdx = (lowIdx + highIdx)/2;
if(search == arr[midIdx]) { //같은 값이 있으면 idx 표시
System.out.println(midIdx+"번째 idx");
break;
} else if(search < arr[midIdx]) { //검색값과 중간값 비교 검색값이 작으면 highIdx=midIdx-1;
highIdx = midIdx-1;
} else if(search > arr[midIdx]) { //검색값과 중간값 비교 검색값이 크면 lowIdx=midIdx+1
lowIdx = midIdx+1;
}
}
}
}
댓글목록
등록된 댓글이 없습니다.