1

私の整数が整数の配列にあるかどうかを確認するにはどうすればよいですか...

たとえば、7 が [ 1 3 4 5 6 7 8] の配列にあるかどうかを知りたい

何か案は?

ありがとう

4

3 に答える 3

6

これには、配列のサイズ (検索する必要がある頻度、配列に追加する必要がある頻度など) などの要因に応じて、いくつかの方法があります。一般に、これはコンピューター サイエンスの問題です。

具体的には、ニーズに最も適した 3 つのオプションがあると思います。

  1. 「ブルート フォース」: 値を探して配列をループするだけです。を呼び出すcontainsObject:と、NSArrayこれが行われます。小さな配列サイズではシンプルでおそらく最速です。
  2. 配列をセットcontainsObject:にコピーし、存在を確認するために使用します
  3. 配列に値を保持しますが、配列を並べ替えて、独自のバイナリ検索を実装します。これは、おそらく思ったほど複雑ではありません。
于 2010-04-12T08:10:58.147 に答える
3

これは、オブジェクトまたは C 配列の場合、配列のタイプによって異なります。あなたのタグから判断すると、NSIntegers を持つ NSArray を持っていますが、これは間違っているでしょう。NSInteger はオブジェクトではなく、NSNumber などのオブジェクトにラップしない限り、NSArray に入れることはできません。

NSアレイ

メソッドを使用しcontainsObject:ます。

整数を NSArray に入れる方法がよくわかりません。これを行う通常の方法は、NSNumber を使用することです。

NSArray *theArray = [NSArray arrayWithObjects:[NSNumber numberWithInteger:1],
                                              [NSNumber numberWithInteger:7],
                                              [NSNumber numberWithInteger:3],
                                              nil];
NSNumber *theNumber = [NSNumber numberWithInteger:12];
/*
 * if you've got the plain NSInteger you can wrap it
 * into an object like this:
 * NSInteger theInt = 12;
 * NSNumber *theNumber = [NSNumber numberWithInteger:theInt];
 */
if ([theArray containsObject:theNumber]) {
    // do something
}

Cアレイ

C-Array を使用していると思われます。その場合、独自のループを作成する必要があります。

NSInteger theArray[3] = {1,7,3}
NSInteger theNumber = 12;
for (int i; i < 3; i++) {
    if (theArray[i] == theNumber) {
        // do something
        break; // don't do it twice
               // if the number is twice in it
    }
}
于 2010-04-12T08:10:18.010 に答える
0
//assume these data, either from a method call or instance variables
int theArray[7] = {1,7,3,8,5,7,4};
int numberIWant = 8;

//this is the essence in a C-array, which you can easily use on ios
BOOL isNumberFound = NO;
for (int i; i < sizeof(theArray)/sizeof(int); i++) {
    if (theArray[i] == numberIWant) {
        isNumberFound = YES;
        break; //breaks the for loop               
    }
}
//return the bool, or otherwise check the bool

if (isNumberFound)
{
//do stuff
}
于 2011-01-04T20:41:05.463 に答える