gpt4 book ai didi

swift - Swift 中的自定义排序

转载 作者:行者123 更新时间:2023-11-30 10:04:40 29 4
gpt4 key购买 nike

我必须在我的应用程序中实现排序功能。请考虑以下逻辑。

我想根据给定的输入(比如 50)对数组 RangeClass 对象进行排序。

class RangeClass:NSObject {
var start:Int64!
var end:Int64!

convenience init(s:Int64,e:Int64) {
self.init()
self.start = s
self.end = e

}


var test1 = RangeClass(s: 50, e: 62) // 50 is in the range
var test2 = RangeClass(s: 12, e: 26) // 50 is not in the range
var test3 = RangeClass(s: 78, e: 89) // 50 is not in the range
var test4 = RangeClass(s: 35, e: 89) // 50 is in the range
var test5 = RangeClass(s: 11, e: 74) // 50 is in the range
var test6 = RangeClass(s: 26, e: 62) // 50 is in the range

var testArr:NSArray=[test1,test2,test3,test4,test5,test6]

testArr[0]
testArr[0]


print(testArr)


testArr.sortedArrayUsingComparator { (
testA, testB) -> NSComparisonResult in

let p1 = testA as! RangeClass
let p2 = testB as! RangeClass
// check whether both are in the range
if p1.start > 50 && p1.end < 50 && p2.start > 50 && p2.end < 50
{

if (p1.start > p2.start) {
return NSComparisonResult.OrderedDescending;
} else {
return NSComparisonResult.OrderedAscending;
}

}else if (p1.start > 50 && p1.end < 50){
return NSComparisonResult.OrderedAscending
}else if (p2.start > 50 && p2.end < 50){
return NSComparisonResult.OrderedDescending
}else{
if (p1.start > p2.start) {
return NSComparisonResult.OrderedDescending;
} else {
return NSComparisonResult.OrderedAscending;
}
}

}

我想要像这样的输出

test5,test6,test4,test1,test2,test3

即范围内的对象应首先出现,不在范围内的对象应最后加入。

最佳答案

我不确定该算法是否可以捕获所有情况,但至少可以捕获问题中的那个情况。

let refNum : Int64 = 50

let sortedArray = testArr.sort { (rangeA, rangeB) -> Bool in
let a = (rangeA.start...rangeA.end).contains(refNum)
let b = (rangeB.start...rangeB.end).contains(refNum)

switch (a, b) {
case (true, true), (false, false) : return rangeA.start < rangeB.start
case (true, false) : return true
case (false, true) : return false
}
}

print(sortedArray)

关于swift - Swift 中的自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765464/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com