일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @state
- core data
- 오브젝트
- 프로세스 스케줄링
- forEach
- UserDefaults
- 앨런
- Swift
- IOS
- struct
- Codable
- 인프런
- Linked List
- 데드락
- 운영체제
- deadlock
- decode
- SwiftUI
- 동시성
- 동기화
- 알고리즘
- async
- Apple Developer Academy
- Algorithm
- 100 days of SwiftUI
- 가상 메모리
- COLOR
- 파일 시스템
- 비동기
- 상호배제
- Today
- Total
목록알고리즘 (9)
기어가더라도 제대로
정렬 요소들을 일정한 순서대로 열거하는 알고리즘 특징 정렬 기준은 사용자가 정할 수 있다. 크게 비교식과 분산식 정렬로 나눌 수 있다. 대부분의 언어가 빌트인으로 제공해준다. 삽입, 선택, 버블, 머지, 힙, 퀵 정렬 등 다양한 정렬 방식이 존재한다. 어떤 정렬이 제일 빠를까? Sorting Algorithms Animation 위 사이트에서 가보면, 퀵 소트가 그렇게 빠르지 않은 것을 알 수 있다. 비교식 정렬 1. 버블 정렬 서로 인접한 두 요소를 검사하여 정렬하는 알고리즘 O(n^2^) 시간 복잡도를 가진다. 2. 선택 정렬 선택한 요소와 가장 우선순위가 높은 요소를 교환하는 정렬 알고리즘 O(n^2^) 시간복잡도를 가진다. 3. 삽입 정렬 선택한 요소를 삽입 할 수 있는 위치를 찾아 삽입하는 방식..
배열이라 부르기도 하고, 순차 리스트라고 부르기도 한다. 변수를 선언하면 메모리 상에 데이터가 쓰인다. ## 정의 연관된 데이터를 연속적인 형태로 구성된 구조를 가진다. 배열에 포함된 원소는 순서대로 번호(index)가 붙는다. ## 특징 고정된 크기를 가지며 일반적으로 동적으로 크기를 늘릴 수 없다. JS 처럼 대부분의 스크립트 언어는 동적으로 증감 원하는 원소의 인덱스를 알고있다면 찾는데 O(1)의 시간이 든다. 원소를 삭제하면 해당 index에 빈자리가 생긴다. ## 배열의 요소 삭제 탐색을 위해 앞당겨야 하는 경우도 있고 공란으로 놓는 경우도 있다. 삭제후 순서를 맞추려면 O(N)이 소요된다. ## 배열의 요소 추가 중간에 요소를 추가하고 싶어도 O(N)이 추가된다. 추가와 삭제가 빈번하면 배열을..
BFS Breadth - First - Search 너비 우선 탐색이다. 최단 거리를 구하는 알고리즘에서 사용이 된다. DFS Depth - First - Search 깊이 우선 탐색 마찬 가지로 최단 거리를 구하는 알고리즘에서 사용된다. 사용처 최단 거리를 구하는 알고리즘 그림판 알고리즘 D에서 G로 가는 최단거리는? 그래프 탐색 알고리즘 너비 우선 탐색 깊이 우선 탐색 너비 우선 탐색 같은 깊이에 해당하는 정점부터 탐색하는 알고리즘 정점, A,B,C 등 기준점 큐를 이용해 탐색한 정보를 관리 D를 먼저 탐색 -> D를 엔큐 이어서 같은 거리에 있는 E, A 등을 탐색 -> E, A를 엔큐 D를 디큐, E를 디큐하고 E에서 갈 수 있는 정점이 없으므로 엔큐는 하지 않는다. A에서 갈 수 있는 B와 C를..