Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_informatika.doc
Скачиваний:
18
Добавлен:
02.04.2015
Размер:
13.85 Mб
Скачать

Поиск элемента по заданному значению

Рассмотрим два алгоритма поиска заданного элемента k в массиве mas из N элементов. Результатом поиска может быть одно из двух: либо поиск завершится успешно, и элемент k в массиве найден, либо поиск окажется неудачным, и элемент k не найден. Для хранения индекса найденного элемента будет использоваться целая переменная ind, которая в случае успешного поиска будет содержать индекс, в противном случае -значение -1.

Последовательный поиск

В данном алгоритме последовательно просматривается весь массив. Начинаем поиск с начала массива и продолжаем до конца, пока не будет найден искомый элемент; затем останавливаемся. Если элемент найден, то переменной ind присваиваем номер этого элемента.

#include "iostream" int main()

{

const int N = 9;

int k, ind, i;

//задание значений элементов массива

int mas[N] = {420, 79, 429, 53, 908, 140, 897, 594, 682};

cout << "Введите значение для поиска: ";

cin >> k;

//поиск значения k в массивеind = -1;

for (i = 0; i < N; i++)

if (mas[i] == k)

{

ind = i;

break;

}

//вывод результата поиска

if (ind < 0)

cout << "Искомое значение в массиве не найдено!\n";

else

cout << " Искомый элемент mas[" << ind << "] = " << mas[ind] << "\n";

return 0;

}

Бинарный поиск

Если массив упорядочен, то можно использовать более эффективный алгоритм поиска, например, бинарный поиск (или метод деления пополам). Обозначим через l - левую границу поиска, r - правую границу поиска и sr -индекс элемента, находящегося в середине массива. Сравним искомый элемент k со средним элементом a[sr]. Если они совпадают, то поиск завершен успешно и местоположение определено. Если искомый элемент больше, то берем правую половину массива (элементы с индексами от sr + 1 до r); если меньше - то левую (элементы с индексами от l до sr - 1). Процесс повторяется до тех пор, пока не будет найден нужный элемент или диапазон поиска не будет исчерпан.

#include "iostream" int main()

{

const int N = 9;

int k, l, r, sr, ind;

//задание значений элементов массива

int mas[N] = {53, 79, 140, 420, 429, 594, 682, 897, 908};

cout << "Введите значение для поиска: ";

cin >> k;

//поиск значения k в массиве

ind = -1;

l = 0;

r = N - 1;

while ( l <= r)

{

sr = (l + r) / 2;

if (mas[sr] == k) { ind = sr; break;}

if (mas[sr] < k) l = sr + 1;

else r = sr - 1;

}

//вывод результата поиска

if (ind < 0) cout << "Искомое значение в массиве не найдено!\n";

else cout << "Искомый элемент mas[" << ind << "] = " << mas[ind] << "\n";

return 0;

}

Пример процесса бинарного поиска элемента 594 в упорядоченном массиве из девяти элементов {53, 79, 140, 420, 429, 594, 682, 897, 908} приведен на рис. 5. Скобки показывают границы просмотра (элементы с индексами от l до r), а подчеркнутое число - середину этого участка массива (элемент с индексом sr).

Рис. 5. Пример бинарного поиска элемента в массиве Контрольная работа «ОДНОМЕРНЫЕ МАССИВЫ»

Вариант 1

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. вычислить сумму отрицательных элементов массива;

  2. вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами;

  3. отсортировать массив по убыванию методом выбора.

Вариант 2

Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:

  1. вычислить сумму положительных элементов массива;

  2. вычислить произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами;

  3. отсортировать массив по возрастанию методом выбора

.Вариант 3

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. упорядочить при вводе элементы массива по возрастанию методом простой вставки;

  2. выполнить бинарным методом поиск в массиве введенного пользователем значения и вывести его индекс на экран;

  3. вычислить сумму элементов массива, расположенных между первым и последним положительными элементами.

Вариант 4

Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:

  1. вычислить произведение элементов массива с четными номерами;

  2. вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами;

  3. отсортировать массив по убыванию методом "пузырька".

Вариант 5

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. вычислить сумму элементов массива с нечетными номерами;

  2. отсортировать массив по возрастанию методом "пузырька";

  3. выполнить бинарным методом поиск в массиве введенного пользователем значения.

Вариант 6

Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:

  1. найти максимальный элемент массива;

  2. подсчитать количество элементов массива, лежащих в диапазоне от R1 до R2, вводимых пользователем;

  3. отсортировать массив по возрастанию методом "пузырька".

Вариант 7

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. найти минимальный элемент массива;

  2. вычислить сумму элементов массива, расположенных между первым и последним нулевыми элементами;

3) отсортировать массив по убыванию методом выбора.

Вариант 8

Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:

  1. найти максимальный по модулю элемент массива;

  2. вычислить сумму элементов массива, расположенных после первого положительного элемента;

  3. отсортировать массив по возрастанию методом выбора.

Вариант 9

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. упорядочить при вводе элементы массива по убыванию методом простой вставки;

  2. найти методом последовательного поиска в массиве введенное пользователем значение и вывести его индекс на экран;

  3. вычислить сумму модулей элементов массива, расположенных после последнего отрицательного элемента.

Вариант 10

Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:

  1. найти индекс максимального по модулю элемента массива;

  2. вычислить сумму элементов массива, расположенных до последнего положительного элемента включительно;

  3. отсортировать массив по возрастанию методом "пузырька".

Вариант 11

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. вычислить сумму модулей элементов массива, расположенных после первого элемента, равного нулю;

  2. найти методом последовательного поиска в массиве введенное пользователем значение и вывести его индекс на экран;

  3. отсортировать массив по убыванию методом "пузырька".

Вариант 12

Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:

  1. подсчитать количество элементов массива, больших введенного пользователем значения R;

  2. вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами;

  3. отсортировать массив по возрастанию методом выбора.

Вариант 13

Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:

  1. упорядочить по убыванию при вводе элементы массива методом простой вставки;

  2. подсчитать количество элементов массива, лежащих в диапазоне от R1 до R2, вводимых пользователем;

  3. найти индекс минимального по модулю элемента массива.

Вариант 14

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. подсчитать количество положительных элементов массива;

  2. вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами;

  3. отсортировать массив по убыванию методом выбора.

Вариант 15

Написать программу работы с одномерным массивом из 15 целых элементов для решения задач:

  1. подсчитать количество элементов массива, равных 0;

  2. вычислить сумму элементов массива, расположенных после максимального элемента;

  3. отсортировать массив по убыванию методом "пузырька".

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]