September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -0,0 +1,35 @@
|
|||
extension Collection where Element: Comparable {
|
||||
public func cocktailSorted() -> [Element] {
|
||||
var swapped = false
|
||||
var ret = Array(self)
|
||||
|
||||
guard count > 1 else {
|
||||
return ret
|
||||
}
|
||||
|
||||
repeat {
|
||||
for i in 0...ret.count-2 where ret[i] > ret[i + 1] {
|
||||
(ret[i], ret[i + 1]) = (ret[i + 1], ret[i])
|
||||
swapped = true
|
||||
}
|
||||
|
||||
guard swapped else {
|
||||
break
|
||||
}
|
||||
|
||||
swapped = false
|
||||
|
||||
for i in stride(from: ret.count - 2, through: 0, by: -1) where ret[i] > ret[i + 1] {
|
||||
(ret[i], ret[i + 1]) = (ret[i + 1], ret[i])
|
||||
swapped = true
|
||||
}
|
||||
} while swapped
|
||||
|
||||
return ret
|
||||
}
|
||||
}
|
||||
|
||||
let arr = (1...10).shuffled()
|
||||
|
||||
print("Before: \(arr)")
|
||||
print("Cocktail sort: \(arr.cocktailSorted())")
|
||||
Loading…
Add table
Add a link
Reference in a new issue