2023.01.19
였어야하는데 01.21에 작성ㅠㅠ
코드를 효율적으로 만들기위해 배워야함
컴퓨터에세 내리는 지시사항을 나열한 것
- 패스파인더 알고리즘 (목적지까지 최대한빠르게 가는 방법)
- 압축 알고리즘 (이미지 손상을 최소화하며 용량을 효율적으로 줄이는 방법)
데이터를 효율적으로 보관하고 찾기 위한 것
- 데이터 크기 기준
- 검색을 위한 인덱스 기준
- 데이터 생성 시간 기준
=> 프로그램의 목적에 따라 어떤 자료구조를 사용하는 것이 효율적인지 공부할 필요가 있음
Array
시간 복잡도 = 작업속도
컴퓨터의 기억공간
하드드라이브
컴퓨터 전원을 꺼도 데이터가 남아있음
RAM(random access memory)
전원을 끄면 데이터가 사라짐
빅오 표기법 : 알고리즘으로 작업을 완료할 때 까지 걸리는 절차 수 N을 이용한 표현
시간복잡도의 예
O(1) : 배열의 길이와 상관없이 딱 한번 실행되는 경우
O(N) : 배열의 길이 만큼 실행되는 경우
O(N^2) : 중첩되는 반복문의 경우 배열의 제곱배의 단계가 실행되는 경우
배열의 맨처음부터 하나씩 검색하는 방법
* 정렬이 끝난 배열에서만 사용할 수 있음
중앙값을 기준으로 왼쪽, 오른쪽으로 검색
1) 중앙값이 찾으려는 값보다 작다면 중앙값 오른쪽만 검색
2) 오른쪽의 중앙값과 다시 비교하여 중앙값을 기준으로 점프
=> 배열의 절반을 제외할 수 있으므로 빠름 (log x그래프)