我有一个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)
如何添加更多条件来对此数组进行排序?
我一直在选择和探测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)