func bubbleSortA(nums: [Int]) -> [Int] {
var nums = nums
let count = nums.count
for i in 0..<count {
print("<")
for j in (i + 1)..<count {
if nums[i] > nums[j] {
nums.swapAt(i, j)
}
print(nums)
}
print(">\n")
}
return nums
}
func bubbleSortB(nums: [Int]) -> [Int] {
print("bubbleSortB")
var nums = nums
let count = nums.count
for i in 0..<count {
var swapFlag = true
print("<")
for j in (i + 1)..<count {
if nums[i] > nums[j] {
nums.swapAt(i, j)
swapFlag = false
}
print(nums)
}
print(">\n")
if swapFlag {
break
}
}
return nums
}
func bubbleSortC(nums: [Int]) -> [Int] {
print("bubbleSortC")
var nums = nums
var boundary = nums.count - 1
var lastSwapIdx = 0
for _ in 0..<nums.count {
var swapFlag = true
print("<")
for j in 0..<boundary {
if nums[j] > nums[j+1] {
nums.swapAt(j, j+1)
swapFlag = false
lastSwapIdx = j
}
print(nums)
}
print(">\n")
boundary = lastSwapIdx
if swapFlag {
break
}
}
return nums
}