2012-02-06 17 views
14

NSMutableArrayのdouble値のMaxとMin値を取得する方法はありますか?私はすでに配列の配列をソートするのではなく、既存のメソッドを探しています。私のためのメソッドを私のAPIを私のためにも私に興味がある配列を並べ替えるために構築する場合。NSMutableArrayの最大値と最小値を取得するメソッドがあります

NSNumber* min = [array valueForKeyPath:@"@min.self"]; 
NSNumber* max = [array valueForKeyPath:@"@max.self"]; 

をあなたは、単にそれらを並べ替えたい場合:あなたは、単に最小値と最大値が2倍取得したい場合は

はあなたに

答えて

45

ありがとう

// the array is mutable, so we can sort inline 
[array sortUsingSelector:@selector(compare:)]; 

NSNumberクラスがうまくソートされますcompare:を使用するだけですが、さらに複雑なソートを行う必要がある場合は、-sortUsingComparator:メソッドを使用してブロックt oソートする。 NSArrayには、現在の配列を変更する代わりに、ソートされた新しい配列を返すメソッドもあります。詳細については、NSArrayおよびNSMutableArrayのドキュメントを参照してください。

+0

- あなたがするNSNumberで最大値を取得したい場合は

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

をこれを使用関数は何ですか?私はそれについてのドキュメントを探していますが、私はNSArrayまたはNSMutableArrayのいずれかで何も見つけることができません。私はそれに渡される文字列が何で、どのような形式にすべきかを知りたい。 –

+2

@MikeKhan NSArrayで定義されたメソッドではありません。 'NSObject'が実装している' NSKeyValueCoding'プロトコルで定義されています。こちらのドキュメントはhttps://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueCoding_Protocol/Reference/Reference.html#//apple_ref/occ/cat/NSKeyValueCoding –

+0

にあります。リンゴは常にキーの文字列リテラルで@を使用しますか? – DevilInDisguise

2

ソートはO(nlogn)なので、最大値と最小値を1回だけ指定したい場合はソートしないでください。最良の方法は、配列を通り、1つずつ比較し、それは線形である、すなわちO(n)である。

2
NSMutableArray * array=[[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil]; 

NSLog(@"Array:%@",array); 


int maxValue; 
for (NSString * strMaxi in array) { 
    int currentValue=[strMaxi intValue]; 
    if (currentValue > maxValue) { 
     maxValue=currentValue; 
    } 
} 
int miniValue; 
for (NSString * strMini in array) { 
    int currentValue=[strMini intValue]; 
    if (currentValue < miniValue) { 
     miniValue=currentValue; 
    } 
} 


NSLog(@"Maxi:%d",maxValue); 
NSLog(@"Mani:%d",miniValue); 
1

あなたは整数を使用して、この最大値を取得したい場合: - :valueForKeyPathを何

NSNumber * max = [array valueForKeyPath:@"@max.intValue"]; 
関連する問題