首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift 4中递归解析数组

在Swift 4中递归解析数组
EN

Stack Overflow用户
提问于 2018-06-29 23:26:30
回答 1查看 697关注 0票数 1

我正在尝试在Swift中实现快速排序,但在递归地将数组解析为quick_sort函数时遇到了问题。我收到错误:

代码语言:javascript
复制
error: ambiguous subscript with base type '[String]' and index type 'CountableRange<Int>'

该函数为:

代码语言:javascript
复制
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有关?

EN

回答 1

Stack Overflow用户

发布于 2018-06-30 01:37:00

当你对一个Array进行切片时,你得到了一个ArraySlice。当你对一个ArraySlice进行切片时,你会得到另一个ArraySlice。这个属性,即T.SubSequence == T,对于创建这样的递归算法至关重要,这样您就只需处理单个类型。

您需要将您的递归函数用于ArraySlice,但是您可以创建一个包装函数,该函数接受一个数组并执行必要的转换。

代码语言:javascript
复制
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))
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51105017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档