delpho
자료구조에 대하여 - 1 본문
_1. 시간 복잡도란?
[ 시간 복잡도 ]
- 입력값과 연산 수행 시간의 상관관계를 나타내는 척도
[ 시간 복잡도에 사용되는 표기법 ]
- Big-O 👉👉 최악의 경우를 나타냄 (상한 접근)
- O(n): 최악의 경우 n번까지 수행되면 프로그램을 끝낼 수 있다.
- Big-Omega 👉👉 최적의 경우를 나타냄 (하한 접근)
- O(n): 최소 n번은 수행되어야 프로그램을 끝낼 수 있다.
- Theta 👉👉 평균 (Big-O 와 Big-Omega값의 평균값)
[ 빅오 표기법 ]
(Better) < < < O(n×log n) < < O(2^n) < O(n!) (Worse)
상수 함수 < 로그 함수 < 선형 함수 < 다항 함수 < 지수 함수 < 재귀 함수
[ 빅오 표기법별 대표 알고리즘]
- : Operation push and pop on Stack
- g n): Binary Tree
- ): for loop
- ×log n): Quick Sort, Merge Sort, Heap Sort
- 2): Double for loop, Insert Sort, Bubble Sort, Selection Sort
- n): Fibonacci Sequence
[ 자료구조의 시간복잡도 ]
[ 정렬의 시간복잡도 ]
_2. 배열과 링크드 리스트의 차이를 설명해주세요.
[ 배열 ]
- 데이터들이 메모리공간에 연속적으로 저장
- index를 통한 Random access 가능
- 데이터 접근이 빠름
- index를 통한 Random access 가능
- 배열의 크기는 생성 이후 변경 불가
- 데이터 삽입 삭제에 취약
[ 링크드 리스트 ]
- 데이터가 메모리에 연속적으로 저장되어있지 않음 (어딘가에 저장)
- Sequential Access만 가능
- 데이터 접근이 배열에 비해 느림
- Sequential Access만 가능
- 크기를 동적으로 변경 가능
- 데이터 삽입 삭제에 용이
- 데이터와 다음 노드를 가리키는 포인터로 이루어진 노드가 연결된 형태
_3. Hash Function, HashTable에 대해서 설명해주세요.
[ Hash Function 해시 함수 ]
- 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
- 키(key) 👉 매핑 전 원래 데이터의 값
- 해시값(hash value) 👉 매핑 후 데이터의 값
- 해싱(hashing) 👉 매핑하는 과정
[ Hash Function 해시 함수 장점 ]
- 적은 리소스로 많은 데이터를 효율적으로 관리
- 무한에 가까운 데이터(키)들을 유한한 개수의 해시값으로 매핑함으로써 관리
- 색인(index)에 해시값을 사용함으로써 모든 데이터를 살피지 않아도 검색과 삽입/삭제를 빠르게 수행
- 해시함수는 언제나 동일한 해시값을 리턴하고, 해당 색인만 알면 해시테이블의 크기에 상관없이 데이터에 대단히 빠르게 접근
[ Hash Function 해시 함수 단점 ]
- 해시함수가 서로 다른 두 개의 키에 대해 동일한 해시값을 내는 해시충돌(collision)이 발생
- 👉 해시함수는 해쉬값의 개수보다 대개 많은 키값을 해쉬값으로 변환(many-to-one 대응)하기 때문
[ Hash Table 해시 테이블 ]
- 해시함수를 사용하여 키를 해시값으로 매핑하고, 이 해시값을 색인(index) 혹은 주소 삼아 데이터의 값(value)을 키와 함께 저장하는 자료구조
- 버킷(bucket) or 슬롯(slot) 👉 데이터가 저장되는 곳
출처
https://todaycode.tistory.com/45
시간 복잡도란?
1. 시간 복잡도 1-1. 시간 복잡도란? 1-2. Big-O 표기법 2. 예제 2-1. O(1) 2-2. O(n) 2-3. O(n²) 2-4. O(n³) 2-5. O(nm) 2-6. O(2ⁿ) 2-7. O(logn) 3. 그 외 3-1. 상수항 무시 3-2. 영..
todaycode.tistory.com
https://bangu4.tistory.com/202
시간복잡도 - 총정리
1. 시간 복잡도란 ? 알고리즘의 효율성을 판단하기 위한 지표로서, 프로그램 수행에 걸리는 절대적 시간이 아닌, 알고리즘을 수행하는데 사용되는 연산들이 몇 번 이루어지는가에 대한 것을 상
bangu4.tistory.com
https://hongcoding.tistory.com/74
배열과 연결리스트 (Array & LinkedList)
배열 vs 연결리스트 배열 배열은 입력된 데이터들이 메모리 공간에서 연속적으로 저장되어 있는 자료구조이다. 메모리상에서 연속적으로 저장되어 있는 특징을 갖기때문에, index를 통한 접근이
hongcoding.tistory.com
https://wooono.tistory.com/281
[자료구조] Linked List(연결 리스트) 와 Array(배열)의 차이
저장 방식 Array 의 element 들은, 인접한 memory 위치에 저장됩니다. LinkedList 의 element 들은, memory 어딘가에 저장됩니다. 새로운 element 의 memory 위치 주소는, linked list 의 이전 node 에 저장됩니다..
wooono.tistory.com
https://m.blog.naver.com/raylee00/221944085465
연결리스트(Linked List)와 배열(Array), 그리고 시간복잡도의 차이에 대해
(자료구조 공부용 포스팅) 연결리스트와 배열이 어떻게 다른거야? 이번 글은 연결리스트중에서도 단일 연결...
blog.naver.com
https://ratsgo.github.io/data%20structure&algorithm/2017/10/25/hash/
해싱, 해시함수, 해시테이블 · ratsgo's blog
이번 글에서는 해싱(hashing)에 대해 살펴보도록 하겠습니다. 이 글은 고려대 김선욱 교수님 강의와 위키피디아, 그리고 스택오버플로우와 고니 님의 블로그를 참고해 정리하였음을 먼저 밝힙니
ratsgo.github.io
'CS' 카테고리의 다른 글
운영체제에 대하여 - 1 (0) | 2022.07.24 |
---|---|
자료구조에 대하여 - 2 (0) | 2022.07.06 |
네트워크에 대하여 - 3 (0) | 2022.06.29 |
네트워크에 대하여 - 2 (0) | 2022.06.25 |
네트워크에 대하여 - 1 (0) | 2022.06.22 |