0

我正在创建图表,我在运行时得到 5 个值,所以我应该如何知道哪个更大,以便我可以设置以下 5 个变量值的最大限制;

    int value3=(int)roundf(appDelegate.itemOneValue);
    int value4=(int)roundf(appDelegate.itemTwoValue);

    int value5=(int)roundf(appDelegate.itemThreeValue);

    int value6=(int)roundf(appDelegate.itemFourValue);

    int value7=(int)roundf(appDelegate.itemFiveValue);

如何检查具有较大值的上述变量。

4

2 回答 2

2
NSArray *allValues = @[[NSNumber numberWithInt:(int)roundf(appDelegate.itemOneValue)], 
    [NSNumber numberWithInt:(int)roundf(appDelegate.itemTwoValue)], 
    [NSNumber numberWithInt:(int)roundf(appDelegate.itemThreeValue)], 
    [NSNumber numberWithInt:(int)roundf(appDelegate.itemFourValue)],
    [NSNumber numberWithInt:(int)roundf(appDelegate.itemFiveValue)]];

int max = [[allValues valueForKeyPath:@"@max.intValue"] intValue];

或者

NSNumber * max = [allValues valueForKeyPath:@"@max.intValue"];

一种不太灵活但可能更容易理解的替代方法:

int max = (value2 < value1) value2 : value1;
max = (value3 < max) value3 : max;
max = (value4 < max) value4 : max;
max = (value5 < max) value5 : max;
max = (value6 < max) value6 : max;
max = (value7 < max) value7 : max; 
// now max contains the highest of all values. 
于 2012-12-18T09:26:39.177 回答
0

您可以在 wikipedia 上阅读一篇很棒的文章:http ://en.wikipedia.org/wiki/Selection_algorithm

这是从数组中获取最小值/最大值的伪代码:

 function select(list[1..n], k)
     for i from 1 to k
         minIndex = i
         minValue = list[i]
         for j from i+1 to n
             if list[j] < minValue
                 minIndex = j
                 minValue = list[j]
         swap list[i] and list[minIndex]
     return list[k]


在 objc 中,伪代码变成了这样:

  int value3=(int)roundf(appDelegate.itemOneValue);
  int value4=(int)roundf(appDelegate.itemTwoValue);
  int value5=(int)roundf(appDelegate.itemThreeValue);
  int value6=(int)roundf(appDelegate.itemFourValue);
  int value7=(int)roundf(appDelegate.itemFiveValue);

  NSArray *values = @[[NSNumber numberWithInt:value3],
                      [NSNumber numberWithInt:value4],
                      [NSNumber numberWithInt:value5],
                      [NSNumber numberWithInt:value6],
                      [NSNumber numberWithInt:value7]];
  NSNumber min=0;
  NSNumber max=0;
  for ( int i=0; i<[values count]; i++ ) {
    min = [values objectAtIndex:i];
    //etc...
    for (int j=0; j<i+1; j++ ) {
      if ( [values[j] > min] ) {
        // etc..
      }
    }
  }

希望这可以帮助。

于 2012-12-18T09:16:45.163 回答