Noah_Developer
Developer Noah
Noah_Developer
전체 방문자
오늘
어제
  • 전체보기 (88)
    • Programmers (33)
      • Level1 (33)
    • FRONT-END (3)
      • React (2)
      • HTML (0)
      • CSS (0)
      • JavaScrpit (1)
    • BACK-END (23)
      • JAVA (14)
      • C (0)
      • Spring (5)
    • DATABASE (11)
      • MySQL (3)
      • Oracle (0)
    • IDE (2)
      • IntelliJ (2)
      • Eclipse (0)
      • VSCode (0)
    • Android (1)
    • 용어 (2)
      • 금융 (2)
    • Developer Diary (5)
      • Web (1)
    • 자격증 (1)
    • Operating System (3)
      • Linux (2)
    • Info (3)

블로그 메뉴

  • 홈
  • 방명록
  • 포트폴리오
  • 깃허브

공지사항

  • 🙏 방문 감사합니다.

인기 글

태그

  • 알고리즘 풀이
  • 크레인 인형뽑기
  • 자바 알고리즘 연습문제
  • 알고리즘 연습문제
  • 알고리즘 예제
  • 코딩테스트
  • 코딩테스트 문제
  • 알고리즘 블로그
  • 초보자 알고리즘
  • 프로그래머스 레벨1
  • 알고리즘 쉬운문제
  • 프로그래머스 문제풀이
  • programmers
  • 크레인 인형뽑기 풀이
  • 개발일기
  • 알고리즘 문제
  • 카카오 블라인드 테스트
  • String StringBuilder 차이
  • 코딩테스트 문제 풀이
  • programmers level 1
  • 코딩테스트 준비
  • 카카오 블라인드
  • 카카오공채
  • 프로그래머스
  • level1
  • 크레인 인형뽑기 정답
  • 프로그래머스 연습문제
  • MySQL
  • 자바 쉬운 알고리즘
  • 프로그래머스 코딩연습

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Noah_Developer

Developer Noah

[Java] 알고리즘 문자열 2진 검색(Binary Search) 예제
BACK-END/JAVA

[Java] 알고리즘 문자열 2진 검색(Binary Search) 예제

2021. 4. 16. 17:32
728x90

자바 알고리즘 문자열 2진 검색 예제입니다.


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class BinarySearch{

    /// Fields

    /// Constructor
    public BinarySearch(){

    }

    /// Method
    public static void main(String args[]){

        // 데이터 정렬을 위해 ArrayList 생성
        List<String> strList = new ArrayList<String>();
        // 데이터 리스트
        String[] data = {"쥐","소","호랑이","토끼","용","뱀","말","양","원숭이","닭","개","돼지"};
        // 검색대상
        String target = "용";

        // String[] -> List
        for(String temp : data){
            strList.add(temp);
        }
        // 정렬 Default : ASC 오름차순
        Collections.sort(strList);

        // 리스트 디버그
        for(int i = 0 ; i < strList.size() ; i++){
            System.out.println(" [" + i + "] " + strList.get(i));
        }

        int dataLength = strList.size();
        int index = new BinarySearch().binarySearch(dataLength, strList, target);

        System.out.println(" 검색하신 [" + target + "] 은 리스트를 오름차순으로 정리하였을때 [" + index + "] 위치에 있습니다.");
        

    }

    /**
     * 2진 검색 기능을 수행하는 메소드
     * @param dataLength 데이터리스트의 길이
     * @param strList 데이터리스트
     * @param target 검색대상 문자열
     * @return
     */
    public int binarySearch(int dataLength, List<String> strList, String target){

        int begin = 0;
        int end = dataLength -1;

        // 데이터가 1건이라도 있을 때 수행할 수 있도록 <= 사용
        while (begin <= end) {

            // 중간 값을 찾기 위해 2로 나눈다.
            int mid = (begin + end) / 2;

            // 검색대상이 리스트의 가운데 값과 같은지 체크
            if(target.equals(strList.get(mid))) {
                return mid;
            } else {
                
                // 검색대상값이 비교대상과 비교하여 -인 경우(사전순으로 앞에있는경우)
                if(target.compareTo(strList.get(mid)) < 0){
                    end = mid - 1;
                } 
                // 검색대상값이 비교대상과 비교하여 +인 경우(사전순으로 뒤에있는경우)
                else {
                    begin = mid + 1;
                }

            }
        }

        return 0;
    }
}

 

728x90
저작자표시 비영리 동일조건 (새창열림)

'BACK-END > JAVA' 카테고리의 다른 글

[Java] 마스킹 알고리즘 (Masking Algorithm)  (0) 2021.04.22
[Java] 로그 생성 파일 경로 추출  (0) 2021.04.19
[Java] JSCH를 사용한 SFTP 서버 통신 및 파일 다운로드 예제  (0) 2021.04.15
자바 제어자 (Modifier)  (0) 2019.03.19
자바 접근제어자(Access Modifier)  (0) 2019.03.18
    'BACK-END/JAVA' 카테고리의 다른 글
    • [Java] 마스킹 알고리즘 (Masking Algorithm)
    • [Java] 로그 생성 파일 경로 추출
    • [Java] JSCH를 사용한 SFTP 서버 통신 및 파일 다운로드 예제
    • 자바 제어자 (Modifier)
    Noah_Developer
    Noah_Developer
    개발 기록 목적을 가진 블로그입니다.

    티스토리툴바