김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 원격저장소
  • 로컬저장소
  • Remote저장소
  • 깃허브데스크탑
  • GitHubDesktop
  • ㄱ
  • KMU_WINK
  • local저장소

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[알고리즘] 이진탐색 파이썬 및 시간복잡도
•알고리즘(Algorithm )/스터디

[알고리즘] 이진탐색 파이썬 및 시간복잡도

2022. 7. 26. 22:43

# 내용

정렬된 데이터 셋에서 탐색을 시도함

함수가 실행될때마다 탐색하는 범위가 반토막이 되기 때문에 순차탐색에 비해 월등히 속도가 빠름

 

# 코드

# 이진탐색은 데이터셋이 정렬되어 있어야함.
import random

def binary_serach(list,target):
  print(f"{list}, target : {target}",end="")
  # 찾는 조건
  if len(list) == 1 :
    if list[0] == target :
      return True
    else :
      return False
  elif len(list) == 0 :
    # binary_serach함수를 호출할때 list[mid+1:]로 슬라이싱 하기 때문에
    # len이 0이 되는 경우가 존재
    return False

  # 탐색 조건
  mid = len(list) // 2
  print(f", mid {list[mid]}")
  if target == list[mid] :
    return True
  elif target < list[mid] :
    return binary_serach(list[:mid],target)
  elif target > list[mid] :
    return binary_serach(list[mid+1:],target)



if __name__ == '__main__':
  list = random.sample(range(20), 10)
  list.sort()
  answer = binary_serach(list, 10)
  print(answer)

 

# 시간복잡도

O(log n)

저작자표시 (새창열림)

'•알고리즘(Algorithm ) > 스터디' 카테고리의 다른 글

[알고리즘] BFS(넓이 우선탐색) 파이썬 구현 , 파이썬으로 그래프 노드 표현하기  (0) 2022.07.27
[알고리즘] 순차탐색 파이썬 시간복잡도  (0) 2022.07.26
[알고리즘] 병합정렬(merge-sort) 파이썬  (0) 2022.07.24
[알고리즘] 재귀함수 파이썬, 회문검사  (0) 2022.07.23
[알고리즘] 선택 정렬 파이썬  (0) 2022.07.22
    '•알고리즘(Algorithm )/스터디' 카테고리의 다른 글
    • [알고리즘] BFS(넓이 우선탐색) 파이썬 구현 , 파이썬으로 그래프 노드 표현하기
    • [알고리즘] 순차탐색 파이썬 시간복잡도
    • [알고리즘] 병합정렬(merge-sort) 파이썬
    • [알고리즘] 재귀함수 파이썬, 회문검사
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바