Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dstaley/e7171375d3f5cb9f2fe4 to your computer and use it in GitHub Desktop.
Save dstaley/e7171375d3f5cb9f2fe4 to your computer and use it in GitHub Desktop.
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