小编Vla*_*kov的帖子

如何实现整数数组的二进制搜索?

我想实现二进制搜索整数数组.我确保数组按递增顺序排序.但我的功能是没有跟踪所有情况,一些检查失败.我在这里错过了什么? Value代表我试图找到的整数.

bool search(int value, int array[], int n)
{   
    int left = 0;
    int right = n - 1;
    int middle = (left + right) / 2;

while (right >= left)
{
    if (array[middle] == value)
    return true;
    else if (array[middle] < value)
    right = middle;
    else if (array[middle] > value)
    left = middle + 1;

    middle = (left + right) / 2;
}

return false;
} 
Run Code Online (Sandbox Code Playgroud)

我的猜测是没有预测到一些左边界或右边界的情况.我也不太了解while情况.

c algorithm

0
推荐指数
1
解决办法
187
查看次数

Swift 协议的可变性

我目前对协议中的 gettable 属性有点困惑。考虑这个例子:

protocol Person {
    var name: String { get }
}
Run Code Online (Sandbox Code Playgroud)

我希望该name属性是只读的,但我发现您可以在没有编译器投诉的情况下更改该值:

struct Driver: Person {
    var name: String
}

var driver = Driver(name: "Ryan")
driver.name = "Changed!"
Run Code Online (Sandbox Code Playgroud)

如果我们driverlet关键字定义,那么编译器会引发错误,但如果我理解正确,它与协议无关,因为常量结构在 Swift 中设计为不可变的。

方法交互的行为与我预期的一样:

extension Person {
    mutating func changeName(_ newName: String) {
        self.name = newName    // Error: 'name' is a get-only property
    }
}
Run Code Online (Sandbox Code Playgroud)

我是 Swift 的新手,提到的细微差别可能没有任何实际用途,但是这种行为让我问自己,我是否对结构的工作方式缺乏一些基本的了解。

struct swift swift-protocols

0
推荐指数
1
解决办法
234
查看次数

标签 统计

algorithm ×1

c ×1

struct ×1

swift ×1

swift-protocols ×1