본문 바로가기

Algorithms (알고리즘)6

Complexity Analysis (1) - Computational Complexity (계산 복잡도) 서문 (Preface) 안녕하세요, 정우 입니다. 오랜만에 새로운 알고리즘 관련 포스팅으로 찾아뵙네요. 앞으로는 알고리즘 및 자료 구조에 관한 게시글을이 대부분을 이룰 예정입니다. (중간 중간 Distributed Systems 나 좀 흥미로운 아키텍쳐에 관한 분석글도 올리도록 하겠습니다. 개요 (Overview) 이번 시리즈의 주제는 바로 "알고리즘의 효율성 분석" 입니다. 그 중에서도 가장 기본이 되는 각종 수학적 Notation (표기법) 들을 알아보도록 하겠습니다. 우선 들어가기에 앞서, 일반적으로 "알고리즘" 이라 하면 떠올리시는건 대부분 코딩을 먼저 떠올리실거라 생각합니다. 하지만, 알고리즘의 사전적 정의를 보자면: An algorithm is a finite sequence of well-d.. 2022. 4. 18.
이진 탐색과 시간 복잡도 분석 (Binary Search and its Time Complexity Analysis) 오늘 다뤄 볼 주제는 바로 "이진 탐색(Binary Search)" 입니다. 높은 효율을 자랑하며 실제로 자주 쓰이는 알고리즘인데요, 과연 이진 탐색이라는 게 무엇인지 한번 알아봅시다! - 이진 탐색(Binary Search) : 이진 탐색이란, 정렬된 자료를 반으로 계속해서 나누어 탐색하는 방법입니다. 쉽게 말해, 아래와 같이 자료를 계속해서 반으로 쪼개서 찾는 것이죠. [자료 1] 이진 탐색 (Binary Search) 감이 잘 안오신다구요? 백문이 불여일견! 바로 C로 작성된 코드로 보시겠습니다~ int* binarySearch(int key, const int *target, size_t length) { int first = 0, last = length - 1, middle = (first +.. 2016. 9. 19.