检查 NSArray 是否排序

Check NSArray is sorted

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

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

通过使用 Cocoa- 库: 典型的答案是再次对它进行排序,如果它已经排序那么那会很快,时间不多并且 space complexity.Then 比较两个数组,如果两个都匹配那么你的数组就被排序了。

编辑: 以上是整数的示例。如果对象(Cocoa 对象)在那里,那么你需要决定你想要比较什么样的值,如果字符串则需要检查 NSOrderedDescending, NSOrderedSame , for NSDate isGreater

我这样做了(因为我有一个字符串数组)

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

所以这段代码 returns 当我调用函数时我得到一个 BOOL 值。