gpt4 book ai didi

ios - 如何在 iOS 中对带符号的数组进行排序?

转载 作者:行者123 更新时间:2023-11-28 18:03:37 25 4
gpt4 key购买 nike

这可能是一个简单的问题,但我不知道如何对有符号整数值数组进行排序。

排序前我的数组,

pointsAry (-2,-7,-5,0,-3,2,-1,-4,1,3,-6)

使用后

NSArray * sortedArray = [pointsAry sortedArrayUsingComparator:^(id str1, id str2){
return [(NSString *)str1 compare:(NSString *)str2 options:NSNumericSearch];
}];

结果

sortedArray : (-1,-2,-3,-4,-5,-6,-7,0,1,2,3)

对于带符号的值,sortedArray 格式不正确,所以我需要这样

(-7,-6,-5,-4,-3,-2,-1,0,1,2,3)

如何像上面的格式排序?提前致谢。

最佳答案

下面的比较器避免了创建临时的 NSNumber 对象:

NSArray *sortedArray = [pointsAry sortedArrayUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
return my_int_compare([str1 intValue], [str2 intValue]);
}];

在哪里

static inline int my_int_compare(int x, int y) { return (x > y) - (x < y); }

是一个辅助函数,它比较两个整数并返回 -1、0 或 +1(根据需要对于比较器方法),使用来自

的技术

当然,问题的出现只是因为数组包含 NSString 对象。使用 NSNumber 将是更好的解决方案。

使用 NSNumericSearch 选项没有帮助,因为它不处理减号作为数字的一部分签名。

关于ios - 如何在 iOS 中对带符号的数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212998/

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