정수 배열을 파라미터로 주었을 때 버블 정렬한 배열을 리턴해주는 함수이다.
import Foundation
var randomArr = Array(1..<10+1).shuffled() // 랜덤으로 섞인 정수배열 생성.
// 버블정렬
func bubbleSort(_ array: [Int]) -> [Int] {
var arr = array
for _ in 0..<arr.count {
for j in 0..<arr.count - 1 {
if arr[j] > arr[j+1] {
arr.swapAt(j, j+1)
}
}
}
return arr
}
bubbleSort(randomArr)
버블 정렬에 flag값을 주어 성능을 향상 시킨 함수이다.
// 성능 향상
/*
- bubbleSort의 특징은 한번 순회를 마치면가장 큰 값이 배열의 가장 뒤쪽으로 가게 된다는 점이다.
- 반복문을 계속 진행하다보면 배열의 뒤쪽부분은 큰 값의 순서대로 정렬이 될 것이고,
우리가 원하던 정렬이 이미 이루어진 상태이므로 더 이상 비교를 하지 않아도 된다.
- flag를 사용하여 앞쪽이 정렬이 되어있다면 더 이상 순회를 돌 필요가 없음을 표시하기 위해 사용.
*/
func bubbleSortFlag(_ array: [Int]) -> [Int] {
var arr = array
var flag: Bool
for i in 1..<arr.count {
flag = true
for j in 0..<arr.count - i {
guard arr[j] > arr[j+1] else { continue }
arr.swapAt(j, j+1)
flag = false
}
guard flag else { continue }
break
}
return arr
}
bubbleSortFlag(randomArr)
틀린부분이 있거나, 더 좋은 방법이 있다면 댓글로 남겨주세요!
🌈댓글은 언제나 환영입니다🙏🏻
반응형
'알고리즘 & 자료구조' 카테고리의 다른 글
BFS/DFS 간단 예제 - Swift (0) | 2022.02.26 |
---|---|
[자료구조] Trie - Swift (0) | 2022.02.25 |
Stack / Queue 구현해보기 - swift (0) | 2021.08.20 |