• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (789)
      • 백준 (1)
      • 일본어 (0)
        • 모모타로TMC (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (15)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [알고리즘] 7. 이진 탐색과 선택 정렬
        2025년 08월 31일
        • Song hyun
        • 작성자
        • 2025.08.31.:51
        728x90
        반응형

        1. 이진 검색 Binary Search

        • 자료의 가운데에 있는 항목의 키 값과 비교하여 다음 검색의 위치를 결정하고, 검색을 계속 진행하는 방법
        • 이진 검색을 하기 위해서는 자료가 정렬된 상태여야 함
        • 과정
        1. 리스트 중앙에 있는 원소를 고른다.
        2. 중앙 원소의 값과 찾고자 하는 목표 값을 비교한다.
        3. 목표 값이 중앙 원소의 값보다 작으면 자료의 왼쪽 반에 대해서 새로 검색을 수행하고, 크다면 자료의 오른쪽 반에 대해서 새로 검색을 수행한다.
        4. 찾고자 하는 값을 찾을 때까지 1~3을 반복한다.
        • 구현

        -검색 범위의 시작점과 종료점을 이용해 검색을 반복수행한다.

        -이진 검색의 경우, 자료의 삽입이나 삭제가 발생할 때 배열의 상태를 항상 정렬 상태로 유지하는 추가 작업이 필요하다.

        def binarySearch(a, N, key): # key를 찾으면 인덱스, 실패하면 -1 반환
        	start = 0
        	end = N-1
        	while start <= end:
        		middle = (start+end) //2
        		if a[middle] == key : #검색 성공
        			return middle
        		elif a[middle] > key : #찾는 값보다 크다면
        			end = middle -1 # 왼쪽 구간 선택
        		else : 
        			start = middle + 1
        	return -1
        

        2. 선택 정렬

        • 주어진 자료들 중 가장 작은 값의 원소부터 차례대로 선택해 위치를 교환
        • O(n제곱)
        • 순서
        1. 주어진 리스트 중에서 최소값 찾기
        2. 그 값을 리스트의 맨 앞에 위치한 값과 교환하기
        3. 맨 처음 위치를 제외한 나머지 리스트를 대상으로 1, 2를 반복
        selection_sort(a[], n):
        	for i : 0 -> n-2:
        		a[i] ,..., a[n-1] 원소 중 최소값 a[k] 찾음
        		a[i]와 a[k] 교환
        
        def selection_sort(a, N):
        	for i in range(N-1):
        		min_idx = i
        		for j in range(i+1, N):
        			if a[min_idx] > a[j] :
        				min_idx = k
        		a[i], a[min_idx] = a[min_idx], a[i]
        

        3. 셀렉션 알고리즘

        • 저장되어있는 자료로부터 K번째로 큰, 혹은 작은 원소를 찾는 방법
        • 최소, 최대, 혹은 중간값을 찾는 알고리즘을 뜻하기도 한다.
        • K 번째로 작은 원소를 찾기
        def select(arr, k):
        	for i in range(0, k):
        		min_index = i
        		for j in range(i+1, len(arr)):
        			 if arr[min_idx] > arr[j]:
        				 min_index = j
        		arr[i], arr[min_idx] = arr[min_idx], arr[i]
        	return arr[k-1]
        
        728x90
        반응형

        '알고리즘' 카테고리의 다른 글

        [알고리즘] 6. 부분집합  (2) 2025.08.27
        [알고리즘] 5. 2차원 배열  (2) 2025.08.23
        [알고리즘] 4. 탐욕 알고리즘  (0) 2025.08.21
        [알고리즘] 3. 완전 검색과 순열  (1) 2025.08.18
        [알고리즘] 2. 카운팅 정렬  (0) 2025.08.15
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바