익명의 개발노트

complexity 본문

프로그래밍 관련자료/자료구조 및 Big-O

complexity

캡틴.JS 2019. 3. 20. 13:04
반응형

Complexity (=복잡도)


Time complexity와 Space complexity가 있다.



복잡도를 설명하기위해서 Big-O notation을 이용한다.


Big-O notation : Complexity를 설명하는 도구, 근사치를 가지고 이야기를 하기때문에 표기법 O(n) 이런식으로 표기된다.


1. Time Complexity. : 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 나타냄.(알고리즘에 사용되는 연산 횟수의 총량)


   1) O(1) : 언제사용 ? array lookup, hash table insert, 하나의 키에 접근하는 방식.


   2) O(logn) : 언제사용 ? binary search 할 때  


   3) O(n) : 언제사용? 배열을 포문에 한번 돌릴때. 


   4) O(nlogn) :   Quick sort, Merge sort, Heap sort 에 사용 


   5) O(n^2) : 2중 배열사용 할 때, => 전체 데이터와 비교할때 사용함. 통상, Insertion sort, Bubble sort, Selection sort


   6) O(c^2) : 사용하면 거의 버그급이지만, 주로 패스워드 만들때 사용한다.  패스워드가 길면 길수록 찾기가 어렵기때문임. 


효율성(런타임 속도) 은 1번으로 갈수록 좋다. 반면 6번으로 갈수록 처리하는데 시간이 오래걸린다.


2. Space complexity : 알고리즘에 사용되는 메모리 공간의 총량임.


   



반응형

'프로그래밍 관련자료 > 자료구조 및 Big-O' 카테고리의 다른 글

[Non-Linear] 트리구조  (0) 2019.04.15
[Linear] Queue  (0) 2019.04.09
[Linear] Stack  (0) 2019.04.09
[Linear] Linked List(단방향)  (0) 2019.04.09
자료구조란? (DATA structure)  (0) 2019.04.08
Comments