
스위프트의 정렬 sort와 sorted 차이점에 대해서 알아보려 합니다. 먼저 sort 함수를 살펴봅시다. sort는 (in place) 제자리에서 정렬합니다. 또한 각 Element가 Comparable 프로토콜을 따라야 정렬할 수 있습니다. 기본적으로 sort는 오름차순으로 정렬됩니다. 내림차순으로 정렬하고 싶으면 sort(by: ) 함수를 활용해서 sort(by: >)로 작성해주면 됩니다. var arr = [3,35,5,32,1] arr.sort() print(arr) // [1, 3, 5, 32, 35] arr.sort(by: >) print(arr) // [35, 32, 5, 3, 1] 제자리에서 정렬하기 때문에 어떠한 배열을 리턴하지 않습니다. 시간 복잡도는 O(nlogn)을 나타내고 n은 ..

병합 정렬은 반으로 나누고 합치면서 정렬합니다. 코드를 살펴봅시다. 위 코드에서 mergeSort 함수는 반으로 나누는 역할을 하며 merge함수는 합치는 역할을 합니다. 큰 흐름을 살펴보면 mergeSort함수를 통해 중간 인덱스를 잡고 왼쪽 오른쪽으로 나눕니다. 나눈 배열을 재귀로 다시 mergeSort로 넘깁니다. 그리고 배열의 길이가 1이면 리턴하게 됩니다. 그럼 배열 count가 1이 될 때까지 나누어지겠죠. 이후 나뉜 배열에 대해서 merge가 실행됩니다. merge가 실행되는 순서는 위와 같습니다. [1][5]에서 처음 merge가 실행되며 [4][1,5]에서 두 번째 merge가 실행되며 [3][6]에서 세 번째 merge가 실행되며 [2][7]에서 네 번째 merge가 실행되며 [3,6]..

버블 정렬은 옆에 있는 값과 비교해서 정렬하는 알고리즘입니다. 버블 정렬은 계속해서 옆 원소랑 비교하며 정렬합니다. 또한 한 번의 external for loop가 끝났을 때 가장 큰 값이 맨뒤로 갑니다. 코드를 살펴봅시다. arr는 우리가 정렬해야 할 배열이며, 1부터 7까지 정렬되지 않은 상태로 존재합니다. arr의 크기는 7이고 인덱스는 0부터 6까지 입니다. external for loop는 6부터 시작해서 아래로 내려오며, internal for loop는 0부터 external의 i까지 올라가며 비교하며 정렬하기 위함입니다. 차근차근 살펴봅시다. external for loop의 i값은 6이며 internal for loop의 j값은 0부터 5까지 실행됩니다. j가 0인 경우를 살펴봅시다. a..

삽입 정렬은 적절한 인덱스에 삽입해주는 정렬입니다. 삽입 정렬은 두 번째 원소부터 시작해서 그 앞의 원소들과 비교해 삽입할 위치를 지정한 후, 지정한 자리에 원소를 삽입해 정렬합니다. 또한 앞에 있는 원소는 이미 정렬되어 있다고 가정합니다. 코드를 살펴봅시다. arr는 우리가 정렬해야 할 배열이며, 1부터 7까지 정렬되지 않은 상태로 존재합니다. arr의 크기는 7이고 인덱스는 0부터 6까지 입니다. 두 번째 원소부터 시작한다 했으니 for문은 인덱스 1부터 6까지 돌기 위한 용도이며, while문은 for문의 i보다 아래 인덱스 중 큰 값이 있으면 swap하기 위한 용도입니다. y는 아래 인덱스까지 모두 탐색하기 위한 변수입니다. 그럼 차근차근 살펴봅시다. for loop에서 i가 1일 때 y가 1인 ..
- Total
- Today
- Yesterday
- ios
- ReactiveX
- 알고리즘
- objective-c
- RX
- wwdc
- swiftUI
- Xcode
- 독서
- swift5
- 책
- 책 추천
- Deep learning
- 딥러닝
- stanford SwiftUI
- Animation
- Algorithm
- 책 후기
- 애니메이션
- SWIFT
- objc
- 머신러닝
- 문자열
- iOS SwiftUI
- 스위프트UI
- string
- leetcode
- ARC
- 스위프트
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |