我正在处理一个分配,在该分配中,我必须使用for循环在数组中找到最大值,而无需对其进行排序。我觉得到目前为止我已经接近正确,但是还不完全正确。下面是我到目前为止的代码示例。

NSArray *unsortedArray = @[ @2, @44, @11, @99, @35 ];


for (int i = 0; i < 4 ; i++) {
    id number = [unsortedArray objectAtIndex:i];
    id largestNumber = 0;
    if (largestNumber < number) {
        largestNumber = number;


        NSLog(@"%@ is the largest number", largestNumber );

  return 0;
    }

}

现在,这仅返回该区域中的第一个值,然后循环停止,我是否将错误的值分配给maximumNumber和number?代码非常陌生,因此,我将不胜感激,并提供反馈和示例。

谢谢!

最佳答案

键值编码解决方案,无循环

NSArray *unsortedArray = @[ @2, @44, @11, @99, @35 ];
NSNumber *maxNumber = [unsortedArray valueForKeyPath:@"@max.self"];
NSLog(@"%@", maxNumber); // 99

参见Mattt Thompson的这篇有趣的文章:
KVC Collection Operators

关于Objective-C:如何在不排序的情况下找到数组中的最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34622118/

10-09 08:54