如何在objective-c的字符串数组中找到最大的数值? [复制]

Posted

技术标签:

【中文标题】如何在objective-c的字符串数组中找到最大的数值? [复制]【英文标题】:How to find greatest numeric value in Array of string in objective-c? [duplicate] 【发布时间】:2017-01-16 03:06:55 【问题描述】:

我有一个字符串数组

NSArray *myNumbers = @[@"0.0454", @"-1.3534", @"0.345",
                             @"65", @"-0.345", @"1.35"];

如何从这个字符串数组中找到最大的数值(65)?

是否有任何默认方法或解决方法?

【问题讨论】:

我认为没有默认方法。你需要自己编码。 【参考方案1】:

只需在转换为浮点数时对其进行排序,然后根据您的排序获取第一个或最后一个值

NSString *max = [myNumbers sortedArrayUsingComparator:^NSComparisonResult(id a, id b) 
        float first = [(NSString*)a floatValue];
        float second = [(NSString*)b floatValue];
        if (first > second)
            return NSOrderedAscending;
        else if (first < second)
            return NSOrderedDescending;
        return NSOrderedSame;
    ][0];

NSString *max = [[myNumbers sortedArrayUsingComparator:^NSComparisonResult(id a, id b) 
        return [(NSString *)a compare:(NSString *)b options:NSNumericSearch];
    ] lastObject];

【讨论】:

这可行,但排序是一项相当昂贵的操作,如果您只需要最大的项目,那么排序就大材小用了。简单地遍历列表会更快,同时保存指向最大项目的指针。一次通过后,您将获得最大的(这是 O(n) 性能,而 O(n log n) 最多可以进行排序。我相信 Apple 的排序例程通常使用 QuickSort,其性能为 O(n log n)最好,最坏情况下为 O(n^2)。) 我同意邓肯的观点,这太过分了。

以上是关于如何在objective-c的字符串数组中找到最大的数值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从Objective-C中的字符串数组创建内部链接?

如何在二维字符数组中找到相同字符的菱形?

寻找For循环数组C ++中最大和最小值的值

AS3 - 如何在数组中找到两个最大的数字

如何在 numpy 数组中找到行索引的最大值?

如何在Java中找到数组中的最大数? [关闭]