티스토리 뷰
반응형
반드시 알아야 하는 알고리즘 top 8
재귀 알고리즘
이진 탐색
순차 탐색
버블 정렬
삽입 정렬
탐욕 알고리즘
최단거리 알고리즘
몬테 카를로 알고리즘
이진 탐색
이진 탐색이란 탐색 알고리즘 중 아주 직관적이고 간단한 알고리즘입니다. 이런 이름이 붙여진 이유는 한번 비교할 때마다 검색할 데이터의 양이 반씩 줄어드는 형태로 검색을 진행하기 때문입니다. 다음 영상을 참고하시면 구체적으로 어떻게 진행되는지 알 수 있습니다.
이진 탐색 코드 : Python
def binary_search(data, number=0):mid = int(len(data)/2)if len(data) > 1:if data[mid] > number:binary_search(data[:mid],number)elif data[mid] < number:binary_search(data[mid:],number)else:print(number,"True")else:print(number,data[0]==number)data = [1,2,3,4,5,6,7,8]binary_search(data,5)
이진 탐색 알고리즘을 재귀적으로 구현한 함수 입니다.
처음에 data 의 길이가 1보다 큰지, 다시말해 데이터 리스트 안의 값들이 2개 이상인지 확인하는 과정을 거칩니다.
이후 data 리스트의 중간값을 mid 변수에 넣고 data 리스트의 중간값과 찾고자 하는 값을 비교합니다.
찾고자하는 값이 중간값보다 큰 경우에는 중간값의 뒷부분을 다시 binary_search() 함수에 넣고, 찾고자하는 값이 중간값보다 작은 경우에는 중간값의 앞부분을 binary_search() 함수에 넣어 함수를 재귀호출 합니다. 혹 중간값과 찾고자하는 값이 같은 경우에는 바로 True 를 print 하는 함수입니다.
재귀 호출이 진행되면서 data 리스트의 개수가 1개 이하로 작아졌을 경우에는 바로 하나 남은 값과 찾고자 하는 값을 비교하여 print 합니다.
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 부분이나 질문이 있으시면
댓글로 말씀해주세요.
금방 확인하고 피드백 드리겠습니다.
좋은 하루 되세요. ^^
반응형
'#Archive' 카테고리의 다른 글
[SQL] 8. 더 큰 구조 만들어 나가기 - JOIN (0) | 2017.12.26 |
---|---|
페이지 교체 알고리즘 - LRU (0) | 2017.12.25 |
2018 카카오 신입 공채 1차 블라인드 코딩테스트 문제 02 (0) | 2017.12.23 |
반드시 알아야하는 알고리즘 top 8 - 1. 재귀 알고리즘 (6) | 2017.12.22 |
[SQL] 7. 자료를 정보로 만드는 첫 걸음 - 그룹 함수 (0) | 2017.12.21 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 캠핑초보
- 영월캠핑
- 커플여행
- 가평여행
- 자연힐링
- Koreancuisine
- 강원도캠핑
- 서울근교캠핑
- 영월여행
- 가족여행
- 캠핑장추천
- 여름캠핑
- bukhansannationalpark
- 계곡캠핑
- 글램핑
- 백준
- 가평캠핑
- SeoulTravel
- 머신러닝
- 알고리즘
- 파이썬
- 여름휴가추천
- 강원도여행
- 반려견캠핑
- 가족캠핑
- Oracle
- 카카오
- sql
- python
- 여름휴가
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함