delpho

자료구조에 대하여 - 1 본문

CS

자료구조에 대하여 - 1

delpho 2022. 7. 5. 16:33

_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 가능
      • 데이터 접근이 빠름
  • 배열의 크기는 생성 이후 변경 불가
  • 데이터 삽입 삭제에 취약

 

 

 

[ 링크드 리스트 ]

  • 데이터가 메모리에 연속적으로 저장되어있지 않음 (어딘가에 저장)
    • 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