fun main(args: Array<String>) {
val a = listOf(3, 5, 2, 3, 6, 1)
println(quicksort(a))
}
fun <T: Comparable<T>> quicksort(items: List<T>): List<T>{
if (items.isEmpty()) return emptyList()
val pivot = items[0]
val equal = items.filter { it == pivot }
val less = items.filter { it < pivot }
val greater = items.filter { it > pivot }
return quicksort(less) + equal + quicksort(greater)
}
ZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPikgewogICAgdmFsIGEgPSBsaXN0T2YoMywgNSwgMiwgMywgNiwgMSkKICAgIHByaW50bG4ocXVpY2tzb3J0KGEpKQp9CgpmdW4gPFQ6IENvbXBhcmFibGU8VD4+IHF1aWNrc29ydChpdGVtczogTGlzdDxUPik6IExpc3Q8VD57CiAgICBpZiAoaXRlbXMuaXNFbXB0eSgpKSByZXR1cm4gZW1wdHlMaXN0KCkKICAgIHZhbCBwaXZvdCA9IGl0ZW1zWzBdCiAgICB2YWwgZXF1YWwgPSBpdGVtcy5maWx0ZXIgeyBpdCA9PSBwaXZvdCB9CiAgICB2YWwgbGVzcyA9IGl0ZW1zLmZpbHRlciB7IGl0IDwgcGl2b3QgfQogICAgdmFsIGdyZWF0ZXIgPSBpdGVtcy5maWx0ZXIgeyBpdCA+IHBpdm90IH0KICAgIHJldHVybiBxdWlja3NvcnQobGVzcykgKyBlcXVhbCArIHF1aWNrc29ydChncmVhdGVyKQp9