-
-
Save dstaley/e7171375d3f5cb9f2fe4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func partition<C: Comparable>(v: C[], left: Int, right: Int) -> Int { | |
var i = left | |
for j in (left + 1)..(right + 1) { | |
if v[j] < v[left] { | |
i++ | |
(v[i], v[j]) = (v[j], v[i]) | |
} | |
} | |
(v[i], v[left]) = (v[left], v[i]) | |
return i | |
} | |
func quicksort<C: Comparable>(v: C[], left: Int, right: Int) { | |
if right > left { | |
let pivotIndex = partition(v, left, right) | |
quicksort(v, left, pivotIndex - 1) | |
quicksort(v, pivotIndex + 1, right) | |
} | |
} | |
func qsort<C: Comparable>(v: C[]) { | |
quicksort(v, 0, v.count-1) | |
} | |
var randomNumbers = [42, 12, 88, 62, 63, 56, 1, 77, 88, 97, 97, 20, 45, 91, 62, 2, 15, 31, 59, 5] | |
qsort(randomNumbers) | |
println(randomNumbers) | |
var randomStrings = ["selfies", "cliche", "single-origin", "coffee", "high", "life", "keffiyeh", "meggings", "tumblr", "neutra", "seitan", "polaroid", "butcher", "keytar", "normcore", "forage"] | |
qsort(randomStrings) | |
println(randomStrings) | |
struct Car: Comparable { | |
var name: String = "" | |
let speed: Int = 0 | |
} | |
func < (lhs: Car, rhs: Car) -> Bool { | |
return lhs.speed < rhs.speed | |
} | |
func == (lhs: Car, rhs: Car) -> Bool { | |
return lhs.speed == rhs.speed | |
} | |
var randomCars = [ | |
Car(name: "McLaren F1", speed: 240), | |
Car(name: "Pagani Huayra", speed: 230), | |
Car(name: "Gumpert Apollo", speed: 225), | |
Car(name: "Koenigsegg Agera R", speed: 260), | |
Car(name: "Zenvo ST1", speed: 233), | |
Car(name: "Bugatti Veyron Super Sport", speed: 268), | |
Car(name: "Noble M600", speed: 225), | |
Car(name: "Saleen S7 Twin-Turbo", speed: 248), | |
Car(name: "Koenigsegg CCX", speed: 245), | |
Car(name: "9ff GT9-R", speed: 257), | |
Car(name: "Hennessey Venom GT", speed: 270), | |
Car(name: "SSC Ultimate Aero", speed: 257), | |
] | |
qsort(randomCars) | |
for car in randomCars { | |
println(car.name) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment