Code
func example(str: String, isAction: Bool = true, action: () -> Void) {
print("---------\(str), isAction: \(isAction)---------")
if isAction {
action()
}
}
func createRandomArray(numberOfElements: Int = 10) -> [Int] {
var randomIntInArray: [Int] = [Int]()
while randomIntInArray.count != numberOfElements {
let popRandomValue = Int(arc4random_uniform(11))
randomIntInArray.append(popRandomValue)
}
return randomIntInArray
}
example(str: "Selection Sort", isAction: true) {
func selectionSort<T: Comparable>(data: [T]) -> [T] {
guard data.count > 1 else { return data }
var targetData = data
var counter: Int = 0
for index in 0..<(targetData.count-1) {
var lowestIndex = index
for innerIndex in index+1..<targetData.count {
counter += 1
print("index:\(index), innerIndex:\(innerIndex), 비교: \(targetData[lowestIndex]), \(targetData[innerIndex]), \(targetData)")
if targetData[lowestIndex] > targetData[innerIndex] {
// index를 바꾸내?
lowestIndex = innerIndex
}
}
index != lowestIndex ? targetData.swapAt(index, lowestIndex) : print("현재 값이 가장 작거나 같음\(targetData[index]), \(targetData[lowestIndex])")
}
print("counter is \(counter)")
return targetData
}
let x = createRandomArray(numberOfElements: 16)
print(selectionSort(data: x))
}
[5,4,3,2,5,6...1]
: 총 10개의 요소가 있는 배열- 가장맨 앞자리에 가장 작은 숫자를 찾아서 채워넣는 방식
- 5 -> 4랑 비교 4가 작내 -> 4 3이랑 비교 3이 작내 -> 3 2랑 비교 2가 작내…. 1이랑 비교 맨 앞자리 1변경
- (첫번째 자리의 가장 낮은수를 찾았으니 두번째 자리부터 나머지 값들 순회) 4 3이랑 비교 3이작내… 반복..
Time Complexity
Reference
https://www.dropbox.com/s/d1q2iz0bc6hjof0/Selection%20Sort.pdf?dl=0
swift-algorithm-club
—