我正在尝试在Swift中实现快速排序,但在递归地将数组解析为quick_sort函数时遇到了问题。我收到错误:
error: ambiguous subscript with base type '[String]' and index type 'CountableRange<Int>'该函数为:
func quick_sort(_ array: inout [String]) {
if array.count > 0 {
let pivot = array[0]
var (left, right) = partition(&array, pivot)
quick_sort(&array[0..<left])
}
}线路quick_sort(&array[0..<left])上出现错误。
这可能与它可能是一个ArraySlice有关?
发布于 2018-06-30 01:37:00
当你对一个Array进行切片时,你得到了一个ArraySlice。当你对一个ArraySlice进行切片时,你会得到另一个ArraySlice。这个属性,即T.SubSequence == T,对于创建这样的递归算法至关重要,这样您就只需处理单个类型。
您需要将您的递归函数用于ArraySlice,但是您可以创建一个包装函数,该函数接受一个数组并执行必要的转换。
func quickSort(_ array: inout [String]) {
func quickSort(_ slice: inout ArraySlice<String>) {
if let first = slice.first {
var (left, right) = partition(&slice, pivot)
quickSort(&slice[0..<left]) // This part of the algorithm will break...
}
}
quickSort(ArraySlice(array))
}https://stackoverflow.com/questions/51105017
复制相似问题