일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IOS
- COLOR
- SwiftUI
- Algorithm
- Swift
- 가상 메모리
- 운영체제
- 상호배제
- 앨런
- UserDefaults
- 데드락
- 오브젝트
- Apple Developer Academy
- 인프런
- 알고리즘
- core data
- @state
- Codable
- 비동기
- forEach
- deadlock
- 동시성
- struct
- 동기화
- 100 days of SwiftUI
- async
- decode
- 프로세스 스케줄링
- Linked List
- 파일 시스템
- Today
- Total
목록Algorithm (14)
기어가더라도 제대로
정렬 요소들을 일정한 순서대로 열거하는 알고리즘 특징 정렬 기준은 사용자가 정할 수 있다. 크게 비교식과 분산식 정렬로 나눌 수 있다. 대부분의 언어가 빌트인으로 제공해준다. 삽입, 선택, 버블, 머지, 힙, 퀵 정렬 등 다양한 정렬 방식이 존재한다. 어떤 정렬이 제일 빠를까? Sorting Algorithms Animation 위 사이트에서 가보면, 퀵 소트가 그렇게 빠르지 않은 것을 알 수 있다. 비교식 정렬 1. 버블 정렬 서로 인접한 두 요소를 검사하여 정렬하는 알고리즘 O(n^2^) 시간 복잡도를 가진다. 2. 선택 정렬 선택한 요소와 가장 우선순위가 높은 요소를 교환하는 정렬 알고리즘 O(n^2^) 시간복잡도를 가진다. 3. 삽입 정렬 선택한 요소를 삽입 할 수 있는 위치를 찾아 삽입하는 방식..
트라이 검색 엔진에서 자동 완성을 하는 자료구조 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료 구조 특징 검색어 자동완성, 사전 찾기 등에 응용될 수 있다. 문자열을 탐색할 때 단순하게 비교하는 것보다 효율적으로 찾을 수 있다. L이 문자열의 길이일 때 탐색, 삽입은 O(L) 만큼 걸린다. 대신 각 정점이 자식에 대한 링크를 전부 가지고 있기 때문에, 저장공간을 많이 사용한다. 구조 루트는 비어있다. 각 간선(링크)은 추가될 문자를 키로 가진다. 각 정점은 이전 정점의 값 + 간선의 키를 값으로 가진다. 해시 테이블과 연결 리스트를 이용하여 구현할 수 있다.
트리 방향 그래프의 일종으로 정점을 가리키는 간선이 하나 밖에 없는 구조를 가지고 있다. 루트 Level 1에 있는 노드 노드 정점 Leaf Node 마지막 Level 에 있는 노드 Degree 부모 노드로 부터 나오는 간선의 수 Level 루트 노드로 부터 얼마나 떨어진지 나타낸다. 루트 노드가 레벨 1이고 한 칸 멀어질 수록 + 1이 된다. 특징 루트 정점을 제외한 모든 정점은 반드시 하나의 부모 정점을 가진다. 정점이 N 개인 트리는 반드시 N-1개의 간선이 생긴다. 루트에서 특정 정점으로 가는 경로는 유일하다. 이진트리 각 정점이 최대 2개의 자식을 가지는 트리를 의미한다. 이진 트리 특징 정점이 N개인 이진 트리는 최악의 경우 높이가 N이 될 수 있다. 정점이 N개인 포화 또는 완전 이진트리의 ..