inblog logo
|
hyeonjeong-jang-0302
    JAVA

    시간 복잡도

    Dec 19, 2023
    시간 복잡도
     

    시간 복잡도 계산

    💡
    log2(2의n승숫자) = n 의 시간 복잡도는 n이다
    log2(16)=4
     
    2의 8승 = 256
    2의 16승 = 65536
    2의 n승 = 무한대
    제곱된 값은 기하급수적으로 커지는데
    너무 숫자가 커지면 int에 들어가지 않기 때문에 log로 표현한다.
     
    💡
    이진 트리 검색은 시간 복잡도가 선형적으로 증가하지 않는다.
     

    시간 복잡도 출력하기

    System.out.println("시간 복잡도: " + Math.log(N) / Math.log(2));
     

    시간 복잡도 표기법

    O(N) = 풀스캔
    O(logN) = 이진 트리 검색
     
    💡
    이정도는 외워라! 2의 8승은 256
    2의 10승 1024
    2의 16승 65536
    2의 32승 4290000000
     
    💡
    랜덤 엑세스가 풀 스캔보다 유리한 때는 15% 미만일 때 까지만이다.(이진 트리는 랜덤 엑세스 방식)
    총 데이터의 개수가 20개라고 치자.
    랜덤 엑세스 방식으로 데이터를 찾으면
    데이터 1개를 찾을 때는 5번, 2개를 찾을 때는 10번, …, n개를 찾을 때는 5n번 만에 찾을 수 있다.
    풀 스캔 방식으로 찾으면 1개를 찾든 2개를 찾든 20번 만에 찾을 수 있다.
    여러 개의 데이터를 찾으려면 풀 스캔 방식이 유리할 수도 있다.
    Share article

    hyeonjeong-jang-0302

    RSS·Powered by Inblog