일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Computer Science
- react 기초
- 파이썬
- 프로그래머스
- python algorithm
- Operating System
- 알고리즘
- 파이썬 알고리즘 인터뷰
- 자바
- context switching
- algorithm
- OS
- REACT
- typeScript
- 운영체제
- Python
- 글또
- Zerobase
- codestates
- 개발공부
- 컴퓨터공학
- useState
- 자료구조
- 자바스크립트
- java
- execution context
- 코드스테이츠
- node.js
- 비동기
- JavaScript
Archives
- Today
- Total
Back to the Basics
[Python Data structure ] 배열 - insertion operation 시간복잡도 분석 본문
Programming Languages/Python
[Python Data structure ] 배열 - insertion operation 시간복잡도 분석
9Jaeng 2021. 10. 12. 00:01728x90
<삽입 연산 - insertion operation 시간 복잡도 분석>
- appen는 동적 배열의 끝에 요소를 추가해주는 반면 insertion은 원하는 위치에 요소를 삽입한다.
appen와 마찬가지로 아래 두 경우로 볼 수 있다.
- 경우1 : 정적 배열에 남는 공간이 있을 때 :
- 배열 중간에 새로운 요소를 넣을 경우, 가장 뒤의 요소부터 insertion 할 위치까지의 요소들을 하나씩 뒤로 밀어준다. 그 후 빈 공간에 요소를 저장한다.
- 배열 중간에 새로운 요소를 넣을 경우, 가장 뒤의 요소부터 insertion 할 위치까지의 요소들을 하나씩 뒤로 밀어준다. 그 후 빈 공간에 요소를 저장한다.
- 시간 복잡도 : 최악의 경우
- index 0에 요소를 추가할 경우엔 모든 index를 하나씩 뒤로 밀어주게 된다. index로 요소에 접근하는 경우 O(1)이며 n번 반복하므로 O(n)이 된다.
- 경우 2 : 정적 배열이 찼을 때 :
- 새로운 배열을 만든 후 기존 데이터를 복사하여 저장한다. 그 후 위와 비슷하게 인덱스를 뒤로 밀고 요소를 추가한다.
- 시간 복잡도 원하는 위치 뒤에 있는 모든 요소들은 뒤로 밀어주는 경우 : O(n)
- 마지막으로 새로운 데이터를 저장 : O(1)
- 새로운 배열을 만들고, 기존 배열을 복사하는 작업의 시간 복잡도 : O(n)
⇒ O(n) + O(n) + O(1) ⇒ O(n)
삽입 연산은 경우 1과 경우 2가 O(n)으로 같다.
결론 : 삽입 연산의 시간 복잡도 : O(n)
728x90
'Programming Languages > Python' 카테고리의 다른 글
[Python Data structure ] 배열 - 삭제연산 & 시간 복잡도 & 동적 배열의 크기 (0) | 2021.10.13 |
---|---|
[Python Datastructure ] 배열 - appen operation 시간복잡도 with 분할상환분석 (0) | 2021.10.12 |
[Python Algorithm Interview ] 2.6 - 문자열 조작 (0) | 2021.09.08 |
[Python Algorithm Interview ] 2.5 - List & Dictionary (0) | 2021.09.08 |
[ Python Algorithm Interview] - 파이썬 문법 2 (1) | 2021.09.01 |
Comments