일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비동기
- decode
- 알고리즘
- 앨런
- Algorithm
- 동시성
- SwiftUI
- 오브젝트
- COLOR
- core data
- deadlock
- 데드락
- async
- 파일 시스템
- 100 days of SwiftUI
- Linked List
- 가상 메모리
- IOS
- @state
- 운영체제
- UserDefaults
- struct
- 동기화
- Apple Developer Academy
- Codable
- 프로세스 스케줄링
- forEach
- 인프런
- 상호배제
- Swift
- Today
- Total
목록CS/자료구조 (27)
기어가더라도 제대로
정렬 요소들을 일정한 순서대로 열거하는 알고리즘 특징 정렬 기준은 사용자가 정할 수 있다. 크게 비교식과 분산식 정렬로 나눌 수 있다. 대부분의 언어가 빌트인으로 제공해준다. 삽입, 선택, 버블, 머지, 힙, 퀵 정렬 등 다양한 정렬 방식이 존재한다. 어떤 정렬이 제일 빠를까? Sorting Algorithms Animation 위 사이트에서 가보면, 퀵 소트가 그렇게 빠르지 않은 것을 알 수 있다. 비교식 정렬 1. 버블 정렬 서로 인접한 두 요소를 검사하여 정렬하는 알고리즘 O(n^2^) 시간 복잡도를 가진다. 2. 선택 정렬 선택한 요소와 가장 우선순위가 높은 요소를 교환하는 정렬 알고리즘 O(n^2^) 시간복잡도를 가진다. 3. 삽입 정렬 선택한 요소를 삽입 할 수 있는 위치를 찾아 삽입하는 방식..
이진탐색 책장에서 원하는 책을 찾는다면? 하나씩 찾으면 선형탐색 나이를 업다운 해서 맞춘다면? 정렬된 숫자가 있으므로, 이진 탐색으로 탐색 가능 특징 반드시 정렬이 되어있어야 사용할 수 있다. 배열 혹은 이진트리를 이용하여 구현할 수 있다. O(log n) 시간 복잡도인 만큼 상당히 빠르다. 배열을 이용한 구현 방법 여기서 숫자 45를 찾는다면? 배열의 시작점을 left, 중간을 mid, 끝을 right라고 놓습니다. mid(58) 보다 찾으려는 값이 작으므로, right를 미드보다 한 칸 작게 둡니다. right = mid - 1 후에 다시 mid를 계산합니다. 이제 찾으려는 값 45가 미드인 36보다 크기 때문에 left를 mid 보다 한칸 위로 둡니다. left = mid + 1 다시 미드를 계산합..
트라이 검색 엔진에서 자동 완성을 하는 자료구조 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료 구조 특징 검색어 자동완성, 사전 찾기 등에 응용될 수 있다. 문자열을 탐색할 때 단순하게 비교하는 것보다 효율적으로 찾을 수 있다. L이 문자열의 길이일 때 탐색, 삽입은 O(L) 만큼 걸린다. 대신 각 정점이 자식에 대한 링크를 전부 가지고 있기 때문에, 저장공간을 많이 사용한다. 구조 루트는 비어있다. 각 간선(링크)은 추가될 문자를 키로 가진다. 각 정점은 이전 정점의 값 + 간선의 키를 값으로 가진다. 해시 테이블과 연결 리스트를 이용하여 구현할 수 있다.