728x90
반응형
Swift 언어에 좀 익숙해 보고자 알고리즘에서 제일 처음에 나오는 정렬 코드를 짜보았다. 간단하게 함수, 배열, 조건문, 반복문 등을 익일 수 있었다.
1. 삽입정렬
func insertionSort(arr: inout [Int]) {
for i in 1 ..< arr.count {
let key = arr[i]
var j = i
while j > 0 && arr[j - 1] > key {
arr.swapAt(j - 1 , j)
j-=1
}
arr[j] = key
}
return
}
2. 선택정렬
func selectionSort(arr: inout [Int]) {
for i in 0 ..< arr.count {
var min = i
for j in i ..< arr.count {
if arr[min] > arr[j] {
min = j
}
}
arr.swapAt(min, i)
}
return
}
3. 퀵 정렬
func partition(arr: inout [Int], start:Int, end:Int) -> Int {
let pivot = arr[ (start+end) / 2 ]
var left = start
var right = end
while left <= right {
while arr[left] < pivot { left += 1 }
while arr[right] > pivot { right -= 1}
if right >= left {
arr.swapAt(right, left)
left+=1
right-=1
}
}
return left
}
func quickSort(arr: inout [Int], start:Int, end:Int) {
let rightPartitionStart = partition(arr: &arr, start: start, end: end)
if start < rightPartitionStart-1 {
quickSort(arr: &arr, start: start, end: rightPartitionStart - 1 )
}
if end > rightPartitionStart {
quickSort(arr: &arr, start: rightPartitionStart, end: end)
}
}
참고로 맥북이 너무느려 윈도우 환경에서 swift 코딩환경을 세팅해서 해봤는데 나름 잘 된다. 빌드하면 당연히 exe파일이 나오고, Visual Studio Code로 디버깅도 가능하다.
728x90
반응형
'개발 > iOS' 카테고리의 다른 글
iOS에서 카메라 필터를 만드는 법 조사 (LUT Lookup Image) (1) | 2022.10.10 |
---|---|
Swift 프로그램 종료하기 exit(0) (0) | 2022.07.09 |
iOS UIKit 튜토리얼 - Frame vs Bounds (0) | 2021.04.20 |
iOS UIKit 튜토리얼 - UITableView - 3 // Section (0) | 2021.04.17 |
iOS UIKit 튜토리얼 - UITableView - 2 / TableViewCell 커스텀하기 (0) | 2021.04.09 |
댓글