代码不多,其中采用了三目运算法对数据进行对比,如果有需要的话,自己把这个方法拆分,最小值不拆分有误差
这里是需要下标,直接上代码:
</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);
如果有需要可以直接复制粘贴到项目中自己运行一下,修改成自己需要的类型