try 实现自相关算法,例如:

let exampleData: [Float] = [1, 2, 3, 4, 5]

试图找到判断1 ^ 2 + 2 ^ 3 + 3 ^ 4 + 4 ^ 5的最快方法.

本质上,迭代数组,对于每个元素,计算它与设置距离之外的另一个元素之间的XOR结果.

问题是,对于许多不同的偏移量,也必须这样做.

现在我只有一个嵌套的for循环,我不知道如何让它更快……

var data: [Bool]
var result: [Int]

...

for offset in start..<end {
    for index in 0..<(end - offset) {
        if (data[index] ^ data[index + frequency]) {
            result[offset] += 1
        }
    }
}

推荐答案

听起来你可能想要从快速算法公司拿到windows(ofCount:)英镑:

https://github.com/apple/swift-algorithms/blob/main/Guides/Windows.md

这将为你提供一个滑动窗口来浏览任何集合,如果你的偏移量相对较小(或者你实际上想要整个窗口,例如做移动平均),那就很好了.

快速算法的东西很好,因为它比你临时做的任何事情都更优化,而且还提供了懒惰的判断.

您还可以考虑对齐和zip对齐您的序列,然后在其上进行映射,例如:

zip(data, data.dropFirst(offset))
    .map { $0 ^ $1 }

...诸如此类

Swift相关问答推荐

我应该在自定义存储队列上使用弱self 吗?

Swift 5.10:无法从非隔离的deinit访问属性*,这是Swift 6中的错误''''

如何将CodingKeys作为数组而不是枚举传递到类外部的函数中?

在visionOS 1.0中已弃用';base Color';:请改用`Color`属性

是否在核心数据中使用Uint?

使用变量(而非固定)的字符串分量进行Swift正则表达式

SwiftUI如何能够在Text中使用字符串字面量来创建LocalizedStringKey?

暂停我的 AR 会话并清除变量和锚点的功能

Pod lib lint 命令找不到 watchos 模拟器

关于变量的视图的 SwiftUI 生命周期

在 Swift 中增量写入大型文本文件的最佳方法

在 Swift 中为(递归)扩展提供默认实例参数

从 Swift 列表中的行中检索值

SwiftUI View Builder 参数无法更改状态

单击按钮后的计时器发布者初始化计时器

Swift Components.Url 返回错误的 URL

UITableViewAlertForLayoutOutsideViewHierarchy 错误:仅警告一次(iOS 13 GM)

swift 3 如何获取明天和昨天的日期(注意特殊情况)新月或新年

Swift中方法的弃用和其他属性,如何?

将 UIImage 剪成圆形