본문 바로가기

알고리즘/개념

[알고리즘] Binary Search란? * 이름이 붙여진 것처럼 Search하는 알고리즘인데, binary의 방법으로 진행한다. =>binary 방법이라는 것은 하나의 배열을 반으로 나누어서, 둘 중 한쪽을 선택하고, 또 반으로 나누고를 반복하는 방식이다. * 전제 조건 => 정렬되어 있어야 한다. * 과정 => 정렬이 되어있다는 전제하에 진행한다. (실제로 정렬이 되어있지 않다면, 정렬 후 진행해야 한다.) 1. 숫자 n을 찾는다고 가정 하였을 때, 중간 값 middle을 정한다. 2. middle보다 n이 크다면, middle보다 큰 쪽을 본다. 3. middle보다 큰 쪽에서 1과 2를 반복적으로 진행하여, 숫자를 찾는다. * 애니메이션 http://www.cs.armstrong.edu/liang/animation/web/BinarySe.. 더보기
[알고리즘/시간복잡도] log이란?? * 컴퓨터 공학에서 log를 쓰는 경우 그 밑이 2이므로, 보통 밑을 생략한다. log 32 = 5log 64 = 6log 32 < log 50 < log 64 * 숫자 n이 있을 때, log를 취하게 되면 엄청나게 작아지게 된다. * log n은 숫자가 크지 않기 때문에 속도에 영향이 적음 * 따라서 log n이 들어간 시간복잡도는 매우 빠른 편에 속한다고 할 수 있다. 더보기
[알고리즘] 정렬(sort)이란?? * 정렬 알고리즘이란? n개의 숫자가 입력으로 주어졌을 때, 사용자가 원하는 대로 크기 순으로 정렬하는 것이다. * 정렬 방식 정렬에는 보통 오름차순과 내림차순 두 가지 방식이 존재한다. => 오름차순 : 작은 수부터 점차 큰 수 순서대로 정렬 => 내림차순 : 큰 수부터 점차 작은 수 순서대로 정렬 * 정렬은 구현 및 시간복잡도 등 디테일 하게 아는 것이 중요하다. => 위 사항을 알아야 하는 이유? 단순히 정해진 알고리즘에 정해진 코드를 짜는 사람이 아니라, 주도적으로 코드의 알고리즘 설계, 분석 / 문제점 파악 등을 명확히 하려면, 아래의 정렬 정도는 손쉽게 짜고, 시간복잡도 또한 분석할 줄 알아야 한다고 생각합니다. 또한, 초기에 어떤 순서대로 되어있느냐에 따라, 정렬 시간이 달라집니다. * 정렬.. 더보기