检查NSArray已排序

时间:2015-12-29 13:43:54

标签: ios objective-c nsmutablearray sorted

我有一个NSMutabaleArray,我想在插入任何元素后检查它是否处于排序模式。那么最快技术是什么呢?

2 个答案:

答案 0 :(得分:1)

您需要一个循环来遍历并检查array[i+1]是否大于array[i]元素,假设数组按升序排序。如果失败则不进行排序。这将是O(n)。

通过使用Cocoa库: 典型的答案是再次对它进行排序,如果它已经排序,那么速度快,时间和空间复杂度不大。然后比较两个数组,如果两个数组匹配,那么你的数组就被排序了。

修改 以上是整数的示例。如果有对象(Cocoa对象),那么你需要决定你要比较什么类型的值,如果字符串需要检查NSOrderedDescendingNSOrderedSam e,NSDate {{ 1}}等等。

答案 1 :(得分:0)

我这样做了(因为我有一个String数组)

for (int i = 1; i < array.count; i++)
    if ([array[i - 1] compare:array[i]] != NSOrderedAscending)
        return NO;
return YES;

所以当我调用函数时,这段代码会返回一个BOOL值。