算法 / 排序

// Time Complexity O(n^2)
// Space Complexity O(1)

func sort(_ arr: [Int]) -> [Int] {
    var items = arr
    for i in 0 ..< items.count {
        for j in i + 1 ..< items.count {
            if (items[j] < items[i]) {
                let tmp = items[j]
                items[j] = items[i]
                items[i] = tmp
            }
        }
    }
    return items
}


var items = [ 41532 ]

var sortItems = sort(items)
// sortItems is {1, 2, 3, 4, 5}
print(sortItems)

// *** simplified speed test ***
items = [Int](repeating: 0, count: 200)
for i in 0 ..< items.count {
    items[i] = i
}
let tmp = items[5]
items[5] = items[6]
items[6] = tmp
let count = 100
let start = Date()

for _ in 0 ..< count {
    sortItems = sort(items)
}

let seconds = abs(start.timeIntervalSinceNow)

print(sortItems)
print(seconds)
// about 2.32 seconds