相关疑难解决方法(0)

Swift - 使用多个条件对对象数组进行排序

我有一个Contact对象数组:

var contacts:[Contact] = [Contact]()
Run Code Online (Sandbox Code Playgroud)

联系班级:

Class Contact:NSOBject {
    var firstName:String!
    var lastName:String!
}
Run Code Online (Sandbox Code Playgroud)

我希望按顺序对该数组进行排序,lastName然后firstName在某些联系人得到相同的情况下lastName.

我可以按照其中一个标准排序,但不能同时排序.

contacts.sortInPlace({$0.lastName < $1.lastName})
Run Code Online (Sandbox Code Playgroud)

如何添加更多条件来对此数组进行排序?

sorting swift

73
推荐指数
5
解决办法
3万
查看次数

Swift使用哪种通用排序算法?它在排序数据上表现不佳

我一直在选择和探测Swift标准库sort()函数的Array类型.令我惊讶的是,我注意到它在已经排序的数据上表现不佳.

对一个数组进行排序的排序Int似乎比已经排序的同一个数组的排序速度快5倍.对一个混洗对象的数组进行排序比按排序顺序排序相同的数据快4倍(排序对象数组与Int数组使用不同的算法我确定所以我将它们排序以消除偏差).

这些是结果:

Shuffled Int array sort time: 1.3961209654808
Shuffled ColorObject array sort time: 3.14633798599243
NOnshuffled Int array sort time: 7.34714204072952
NOnshuffled ColorObject array sort time: 10.9310839772224
Run Code Online (Sandbox Code Playgroud)

以下是我的代码参考:

class ElapsedTimer {

    let startTime: CFAbsoluteTime
    var endTime: CFAbsoluteTime?

    init() {
        startTime = CFAbsoluteTimeGetCurrent()
    }

    func stop() -> CFAbsoluteTime {
        endTime = CFAbsoluteTimeGetCurrent()
        return duration!
    }

    var duration: CFAbsoluteTime? {
        if let endTime = endTime {
            return endTime - startTime
        } else {
            return …
Run Code Online (Sandbox Code Playgroud)

arrays sorting performance time-complexity swift

13
推荐指数
3
解决办法
5556
查看次数

标签 统计

sorting ×2

swift ×2

arrays ×1

performance ×1

time-complexity ×1