21년, 노션에 정리했던 노마드코더 알고리즘 강의 요약노트
- Time complexity : 데이터구조의 오퍼레이션 혹은 알고리즘이 얼마나 빠르고 느린지 측정하는 방법
- 시간단위로 하는게 아니라 얼마나 많은 단계가 있는가로 측정
- 메모리 - 휘발성메모리(컴퓨터 끄면 사라지는 데이터(RAM), 비휘발성메모리(하드드라이브)
- 프로그램이 돌아갈떄 모두 RAM에 저장 >> Random Access Memory
- 배열의 길이가 얼만큼인지 직접 알려줘야함 (C언어)
- 파이썬이나 자바스크립트의 경우 알아서 컴터한테 알려줌
✔️Operation1. Reading
- 배열을 어떻게 읽는가 배열은 0부터, 위치만 알면 금방 찾을 수 있음
- 배열에서 데이터를 꺼내는것은 빠름! 왜냐면 컴퓨터는 배열이 어디서 시작하는지를 알고있으니까
- 많은 데이터를 읽을땐 배열이 짱임(Random Access덕분) index에 접근하는건 step수가 똑같거등
✔️Operation2. Search
- 검색의 경우 좀 다름, 하나하나 찾아봐야함
- Linear Search : 선형 0부터 끝까지 하나하나 열어보는거
✔️Operation3. Insert (Add)
- 메모리공간을 미리 확보해둬야함. 배열길이 미리 알려줘야함
- 배열 끝에 넣는건 별 문제 없음 (best), 최악은 맨 앞에 삽입할때.. 기존에 있던 모든 배열 데이터를 한칸씩 뒤로 밀어줘야함.. 배열의 크기가 크다면?!! 👎
- 또다른 최악! 만약에 기존에 확보해둔 배열공간이 꽉 찼는데 추가해야할때! 이때는 새로 만들고.. 기존꺼 복사해서 넣고 그다음에 새로운 데이터를 삽입해야함..
✔️Operation4. Delete
- 젤 끝에있는거 삭제 쉬움!
- 중간꺼 삭제할땐 중간꺼 삭제하고 공백생긴걸 채워주기위해 다 옮겨야함.. 최악은 첫번째꺼 삭제할때.. 전부다 옮겨야하니까!
배열은 읽을땐 최고 개빨름
근데 검색하고 추가하고 삭제하려면 느려짐
고로 배열에서 위같은 작업하려면 맨끝에서 작업하는것 추천!