Я сейчас учусь быстро и хотел написать алгоритм быстрой сортировки для [Int]
func swap(array:[Int], x:Int, y:Int)->[Int] { //swap elements in array
var result:[Int] = array
result[y] = array[x]
result[x] = array[y]
return result
}
func split(array:[Int], u:Int, o:Int , p:Int)->Int { //where the sorting happens
let pivot:Int = array[p]
swap(array: array, x: p, y: o)
var pn:Int = u
for j in u...o {
if(array[j] <= pivot) {
swap(array: array, x: pn, y: j)
pn = pn+1
}
}
swap(array: array, x: pn, y: o);
return pn;
}
func quickSortR(array:[Int],u:Int ,o:Int) { //recursive call
if(u < o){
let p:Int = o
let pn:Int = split(array: array, u: u, o: o, p: p)
quickSortR(array: array,u: u,o: pn-1)
quickSortR(array: array,u: pn+1,o: o)
}
}
func quickSort(array:[Int]) { //initial call
quickSortR(array: array, u: 0, o: array.count-1)
}
Моя проблема в том, , что я не знаю, как применить эту реализацию к массиву.
Например, если я получил массив a:[Int] = [3,1,2]
.
Я не могу проверить, работает ли реализация по print(quickSort(a))
, потому что тип возврата quickSort
равен void
.
Конечно, я не могу применить quickSort
к этому массиву, как a.quickSort(a)
Я действительно не хочу сильно менять мою реализацию алгоритма, если это не является причиной этой проблемы (например, только сигнатура или тип возвращаемого значения)