반응형
➰ 배열을 다루는 방법
import java.util.Scanner;
public class ArraySearch01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
/* 배열을 다루는 방법. */
// 탐색 -> 순차탐색(순서대로), 이진탐색(중간값부터 비교)
int[] arr = {30, 10, 20, 50, 40, 60, 100, 110, 90, 80};
//입력받은 값의 위치를 출력
int find = scan.nextInt();
int index = -1;
for(int i = 0; i < arr.length; i++) {
if(arr[i] == find) { //찾은경우
index = i; //인덱스 값을 수정
break; //탈출
}
}
System.out.println("인덱스위치:" + index);
scan.close();
}
}
➰순차탐색과 문자열비교
- java에서는 string 비교를 절대 ==으로 할 수 없다. false로 인식한다.
- 비교할문자열1.equals("비교할문자열2") 로 할 수 있다.
/* 문자열을 비교하는 공식 */
if(name.equals("홍길동")) {
System.out.println("같음");
}
import java.util.Scanner;
public class ArraySearch02 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//순차탐색과 문자열 비교
/* 순차 탐색*/
String[] arr = {"홍길동","이순신","카카오","네이버","박찬호"};
String name = scan.next();
int index = -1;
for(int i = 0; i < arr.length; i++) {
if(name.equals(arr[i])) {
index = i;
break;
}
}
if(index == -1) {//값이 없음.
System.out.println(name + "은 없습니다.");
}else {
System.out.println(name + "는(은) " + index + "번째에 위치합니다.");
}
scan.close();
}
}
➰ 이진탐색
이진탐색 : 값을 가장빨리 찾는 방법.
- 전제조건이 정렬이 되어있어야 된다(오름차순, 내림차순) 중복없이.
- 전제조건이 없다면 사용할 수 없다.
package day07;
import java.util.Arrays;
import java.util.Scanner;
public class ArraySearch03 {
public static void main(String[] args) {
/* 이진탐색 - 절반으로 나눠가며 찾아가는 과정 */
//조건 - 순서대로 나열된 데이터
int[] arr = {30, 50, 80, 100, 110, 250, 300, 500};
Scanner scan = new Scanner(System.in);
System.out.print("입력>");
int num = scan.nextInt();
//요 한줄짜리 코드가 밑에 구성한 이진탐색코드를 대체해준다.
//System.out.println(Arrays.binarySearch(arr, num));
int low = 0;
int high = arr.length - 1; //7
while(low <= high) {
int mid = (low + high) / 2;
if(num == arr[mid]) {
System.out.println("인덱스 위치:" + mid);
break;
}
if(num > arr[mid]) { //입력값이 중간값 보다 큰 경우
low = mid+1;
}else { //입력값이 중간값 보다 작은 경우
high = mid-1;
}
}
if(low > high) {
System.out.println("찾는 값은 없습니다");
}
scan.close();
}
}반응형
'국비지원 > JAVA' 카테고리의 다른 글
| [JAVA] 8. 배열의 활용 (입력/수정/삭제) (0) | 2022.09.29 |
|---|---|
| [JAVA] 7-4. 정렬 (선택정렬) (0) | 2022.09.28 |
| [JAVA] 7-2. 반복문 continue (0) | 2022.09.28 |
| [JAVA] 7-1. 무한loop와 탈출문 break (0) | 2022.09.28 |
| [JAVA] 6. 중첩반복문(for)과 향상된 for loop (0) | 2022.09.27 |