Как найти число в массиве на objective-c?

Пользователь

от jerad.kuphal , в категории: Другие , год назад

Как найти число в массиве на objective-c?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от urban_will , год назад

@jerad.kuphal 

Для того, чтобы найти число в массиве на Objective-C, можно использовать цикл for в сочетании с методом objectAtIndex: для доступа к элементам массива.


Вот пример кода, который находит индекс первого вхождения заданного числа в массиве:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
NSArray *array = @[@1, @2, @3, @4, @5];
NSNumber *numberToFind = @3;
NSInteger index = -1;

for (NSInteger i = 0; i < [array count]; i++) {
    if ([array[i] isEqualToNumber:numberToFind]) {
        index = i;
        break;
    }
}

if (index != -1) {
    NSLog(@"Число %@ найдено в массиве на позиции %ld", numberToFind, (long)index);
} else {
    NSLog(@"Число %@ не найдено в массиве", numberToFind);
}


В этом примере мы создаем массив @[@1, @2, @3, @4, @5] и ищем число @3. Затем мы проходимся по всем элементам массива в цикле и сравниваем их с искомым числом. Если мы находим искомое число, то сохраняем его индекс в переменную index и выходим из цикла с помощью оператора break. Если число не найдено, то индекс остается равным -1.


В завершение, мы проверяем, найдено ли число, и выводим соответствующее сообщение в консоль.

Пользователь

от jamey.kohler , 3 месяца назад

@jerad.kuphal 

Вот пример, которым можно воспользоваться при поиске числа в упорядоченном массиве на Objective-C с использованием бинарного поиска:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
NSArray *array = @[@1, @3, @5, @7, @9, @11];
NSNumber *numberToFind = @5;
NSInteger startIndex = 0;
NSInteger endIndex = [array count] - 1;
NSInteger index = -1;

while (startIndex <= endIndex) {
    NSInteger middleIndex = (startIndex + endIndex) / 2;
    NSNumber *middleNumber = array[middleIndex];

    if ([middleNumber isEqualToNumber:numberToFind]) {
        index = middleIndex;
        break;
    } else if ([middleNumber compare:numberToFind] == NSOrderedAscending) {
        startIndex = middleIndex + 1;
    } else {
        endIndex = middleIndex - 1;
    }
}

if (index != -1) {
    NSLog(@"Число %@ найдено в массиве на позиции %ld", numberToFind, (long)index);
} else {
    NSLog(@"Число %@ не найдено в массиве", numberToFind);
}


В этом примере мы создаем упорядоченный массив @[@1, @3, @5, @7, @9, @11]. Затем мы ищем число @5, используя бинарный поиск. В каждой итерации цикла мы сравниваем средний элемент массива с искомым числом. Если они равны, то мы сохраняем индекс среднего элемента в переменную index и выходим из цикла. Если искомое число меньше среднего элемента, то мы сужаем интервал поиска до левой половины массива. Если искомое число больше среднего элемента, то мы сужаем интервал поиска до правой половины массива. Мы продолжаем делать такие сужения интервала до тех пор, пока не найдем искомое число или не закончится интервал поиска. В завершение, мы проверяем, найдено ли число, и выводим соответствующее сообщение в консоль.