代码不多,其中采用了三目运算法对数据进行对比,如果有需要的话,自己把这个方法拆分,最小值不拆分有误差
这里是需要下标,直接上代码:
- </pre><p class="p1"><pre name="code" class="objc"> NSArray * ary = @[@"45",@"876",@"234",@"98",@"23",@"63",@"34",@"4"];
- int max_number = 0; //最大值
- int max_index = 0; //最大值的下标
- int min_number = INFINITY; //最小值
- int min_index = 0; //最小值下标
- int all = 0; //总和
- float mid = 0; //总和平均值
- for (int i=0; i<ary.count; i++)
- {
- //取最大值和最大值的对应下标
- int a = [ary[i] intValue];
- if (a>max_number)
- {
- max_index=i;
- }
- max_number = a>max_number?a:max_number;
- //取最小值和最小值对应的下标
- int b = [ary[i] intValue];
- if (b<min_number)
- {
- min_index = i;
- }
- min_number = b>min_number?min_number:b;
- //去除数组中所有的值
- int c = [ary[i] intValue];
- all = all+c;
- //求平均数
- mid = all/ary.count;
- }
- NSLog(@"输出最大值在数组中的下标---->>>%d",max_index);
- NSLog(@"输出数组中最大值---->>>>%d",max_number);
- NSLog(@"输出最小值在数组中的下标---->>>%d",min_index);
- NSLog(@"输出数组中最小值---->>>>%d",min_number);
- NSLog(@"输出所有的元素的和---->>>%d",all);
- NSLog(@"输出数组内所有数据的平均数--->>>%.2f",mid); // 考虑到不一定是刚好可以整除,所以取保留小数点后两位
如果不需要下标的话可以采用这一段代码
上代码喽:
- CGFloat all_value = [[ary valueForKeyPath:@"@sum.floatValue"] floatValue]; //总和
- CGFloat mid_value = [[ary valueForKeyPath:@"@avg.floatValue"] floatValue]; //平均数
- CGFloat max_value = [[ary valueForKeyPath:@"@max.floatValue"] floatValue]; //最大值
- CGFloat min_value = [[ary valueForKeyPath:@"@min.floatValue"] floatValue]; //最小值
- NSLog(@"总值--->>>%.2f\n平均值--->>>%.2f\n最大值---->>>>%.2f\n最小值---->>>%.2f",all_value,mid_value,max_value,min_value);