Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмические языки: Лабораторная работа №3 -...doc
Скачиваний:
37
Добавлен:
10.11.2019
Размер:
336.9 Кб
Скачать

Линейный поиск в массиве

Линейным поиском называется обычный просмотр всего массива на предмет нахождения отдельного элемента, отвечающего заданному условию.

Линейный поиск – простейшая разновидность алгоритмов поиска данных.

Например, если нам требуется найти число 5 в массиве из 15 элементов, то мы начинаем поиск с элемента с номером 0 и последовательно проверяем каждый элемент на равенство числу 5. Если совпадение найдено – необходимо запомнить номер элемента и завершить цикл поиска.

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

Двоичный поиск в массиве

Если у нас есть массив, содержащий упорядоченную последовательность данных, то очень эффективен двоичный поиск.

Переменные lowerBound и upperBound содержат, соответственно, левую и правую границы отрезка массива, где находится нужный нам элемент. Мы начинаем всегда с исследования среднего элемента отрезка. Если искомое значение меньше среднего элемента, мы переходим к поиску в верхней половине отрезка, где все элементы меньше только что проверенного. Другими словами, значением upperBound становится (M – 1) и на следующей итерации мы работаем с половиной массива. Таким образом, в результате каждой проверки мы вдвое сужаем область поиска. Так, в нашем примере, после первой итерации область поиска – всего лишь три элемента, после второй остается всего лишь один элемент. Таким образом, если длина массива равна 6, нам достаточно трех итераций, чтобы найти нужное число.

Двоичный поиск - очень мощный метод. Если, например, длина массива равна 1023, после первого сравнения область сужается до 511 элементов, а после второй - до 255. Легко посчитать, что для поиска в массиве из 1023 элементов достаточно 10 сравнений.

Алгоритм двоичного поиска приведен ниже:

lowerBound = 0

upperBound = size

Повторять бесконечно

M = (lowerBound + upperBound) / 2

Если K < A[M], то

upperBound = M – 1

Иначе Если K > A[M], то

lowerBound = M + 1

Иначе

Сообщить «Элемент найден, его индекс: », M

Выход из цикла

Все если

Если lowerBound > upperBound, то

Сообщить «Элемент не найден»

Выход из цикла

Все если

Все повторять

В описанном выше алгоритме приняты следующие условия:

  1. size – размер массива

  2. K – число, которое нужно найти

  3. М – индекс найденного элемента.

7. Варианты индивидуальных заданий

Задание

Сложность

Алгоритм сортировки

Алгоритм поиска

элементы, присутствующие в обоих массивах А и В

1

Пузырьком

Линейный

элементы, которые есть только в массиве А или только в массиве В

1

Пузырьком

Линейный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

1

Пузырьком

Линейный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

1

Пузырьком

Линейный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

1

Пузырьком

Линейный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

1

Пузырьком

Линейный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

1

Пузырьком

Линейный

элементы массива А, повторяющиеся в массиве В несколько раз

1

Пузырьком

Линейный

элементы присутствующие в обоих массивах А и В в одном экземпляре

1

Пузырьком

Линейный

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

1

Пузырьком

Линейный

повторяющиеся элементы массива А, которые есть в массиве В

1

Пузырьком

Линейный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

1

Пузырьком

Линейный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

1

Пузырьком

Линейный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

1

Пузырьком

Линейный

повторяющиеся элементы массива А, которых нет в массиве В

1

Пузырьком

Линейный

элементы, присутствующие в обоих массивах А и В

2

Выбором

Линейный

элементы, которые есть только в массиве А или только в массиве В

2

Выбором

Линейный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

2

Выбором

Линейный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

2

Выбором

Линейный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

2

Выбором

Линейный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

2

Выбором

Линейный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

2

Выбором

Линейный

элементы массива А, повторяющиеся в массиве В несколько раз

2

Выбором

Линейный

элементы присутствующие в обоих массивах А и В в одном экземпляре

2

Выбором

Линейный

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

2

Выбором

Линейный

повторяющиеся элементы массива А, которые есть в массиве В

2

Выбором

Линейный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

2

Выбором

Линейный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

2

Выбором

Линейный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

2

Выбором

Линейный

повторяющиеся элементы массива А, которых нет в массиве В

2

Выбором

Линейный

элементы, присутствующие в обоих массивах А и В

3

Вставками

Линейный

элементы, которые есть только в массиве А или только в массиве В

3

Вставками

Линейный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

3

Вставками

Линейный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

3

Вставками

Линейный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

3

Вставками

Линейный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

3

Вставками

Линейный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

3

Вставками

Линейный

элементы массива А, повторяющиеся в массиве В несколько раз

3

Вставками

Линейный

элементы присутствующие в обоих массивах А и В в одном экземпляре

3

Вставками

Линейный

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

3

Вставками

Линейный

повторяющиеся элементы массива А, которые есть в массиве В

3

Вставками

Линейный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

3

Вставками

Линейный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

3

Вставками

Линейный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

3

Вставками

Линейный

повторяющиеся элементы массива А, которых нет в массиве В

3

Вставками

Линейный

элементы, присутствующие в обоих массивах А и В

4

Подсчетом

Линейный

элементы, которые есть только в массиве А или только в массиве В

4

Подсчетом

Линейный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

4

Подсчетом

Линейный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

4

Подсчетом

Линейный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

4

Подсчетом

Линейный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

4

Подсчетом

Линейный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

4

Подсчетом

Линейный

элементы массива А, повторяющиеся в массиве В несколько раз

4

Подсчетом

Линейный

элементы присутствующие в обоих массивах А и В в одном экземпляре

4

Подсчетом

Линейный

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

4

Подсчетом

Линейный

повторяющиеся элементы массива А, которые есть в массиве В

4

Подсчетом

Линейный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

4

Подсчетом

Линейный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

4

Подсчетом

Линейный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

4

Подсчетом

Линейный

повторяющиеся элементы массива А, которых нет в массиве В

4

Подсчетом

Линейный

элементы, присутствующие в обоих массивах А и В

5

Пузырьком

Двоичный

элементы, которые есть только в массиве А или только в массиве В

5

Пузырьком

Двоичный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

5

Пузырьком

Двоичный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

5

Пузырьком

Двоичный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

5

Пузырьком

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

5

Пузырьком

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

5

Пузырьком

Двоичный

элементы массива А, повторяющиеся в массиве В несколько раз

5

Пузырьком

Двоичный

элементы присутствующие в обоих массивах А и В в одном экземпляре

5

Пузырьком

Двоичный

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

5

Пузырьком

Двоичный

повторяющиеся элементы массива А, которые есть в массиве В

5

Пузырьком

Двоичный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

5

Пузырьком

Двоичный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

5

Пузырьком

Двоичный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

5

Пузырьком

Двоичный

повторяющиеся элементы массива А, которых нет в массиве В

5

Пузырьком

Двоичный

элементы, присутствующие в обоих массивах А и В

6

Выбором

Двоичный

элементы, которые есть только в массиве А или только в массиве В

6

Выбором

Двоичный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

6

Выбором

Двоичный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

6

Выбором

Двоичный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

6

Выбором

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

6

Выбором

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

6

Выбором

Двоичный

элементы массива А, повторяющиеся в массиве В несколько раз

6

Выбором

Двоичный

элементы присутствующие в обоих массивах А и В в одном экземпляре

6

Выбором

Двоичный

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

6

Выбором

Двоичный

повторяющиеся элементы массива А, которые есть в массиве В

6

Выбором

Двоичный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

6

Выбором

Двоичный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

6

Выбором

Двоичный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

6

Выбором

Двоичный

повторяющиеся элементы массива А, которых нет в массиве В

6

Выбором

Двоичный

элементы, присутствующие в обоих массивах А и В

7

Вставками

Двоичный

элементы, которые есть только в массиве А или только в массиве В

7

Вставками

Двоичный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

7

Вставками

Двоичный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

7

Вставками

Двоичный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

7

Вставками

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

7

Вставками

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

7

Вставками

Двоичный

элементы массива А, повторяющиеся в массиве В несколько раз

7

Вставками

Двоичный

элементы присутствующие в обоих массивах А и В в одном экземпляре

7

Вставками

Двоичный

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

7

Вставками

Двоичный

повторяющиеся элементы массива А, которые есть в массиве В

7

Вставками

Двоичный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

7

Вставками

Двоичный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

7

Вставками

Двоичный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

7

Вставками

Двоичный

повторяющиеся элементы массива А, которых нет в массиве В

7

Вставками

Двоичный

элементы, присутствующие в обоих массивах А и В

8

Подсчетом

Двоичный

элементы, которые есть только в массиве А или только в массиве В

8

Подсчетом

Двоичный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

8

Подсчетом

Двоичный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

8

Подсчетом

Двоичный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

8

Подсчетом

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

8

Подсчетом

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

8

Подсчетом

Двоичный

элементы массива А, повторяющиеся в массиве В несколько раз

8

Подсчетом

Двоичный

элементы присутствующие в обоих массивах А и В в одном экземпляре

8

Подсчетом

Двоичный

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

8

Подсчетом

Двоичный

повторяющиеся элементы массива А, которые есть в массиве В

8

Подсчетом

Двоичный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

8

Подсчетом

Двоичный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

8

Подсчетом

Двоичный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

8

Подсчетом

Двоичный

повторяющиеся элементы массива А, которых нет в массиве В

8

Подсчетом

Двоичный

элементы, присутствующие в обоих массивах А и В

9

Слиянием

Линейный

элементы, которые есть только в массиве А или только в массиве В

9

Слиянием

Линейный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

9

Слиянием

Линейный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

9

Слиянием

Линейный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

9

Слиянием

Линейный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

9

Слиянием

Линейный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

9

Слиянием

Линейный

элементы массива А, повторяющиеся в массиве В несколько раз

9

Слиянием

Линейный

элементы присутствующие в обоих массивах А и В в одном экземпляре

9

Слиянием

Линейный

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

9

Слиянием

Линейный

повторяющиеся элементы массива А, которые есть в массиве В

9

Слиянием

Линейный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

9

Слиянием

Линейный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

9

Слиянием

Линейный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

9

Слиянием

Линейный

повторяющиеся элементы массива А, которых нет в массиве В

9

Слиянием

Линейный

элементы, присутствующие в обоих массивах А и В

10

Слиянием

Двоичный

элементы, которые есть только в массиве А или только в массиве В

10

Слиянием

Двоичный

элементы, которые присутствуют в массиве А, но отсутствуют в массиве В

10

Слиянием

Двоичный

элементы, которые присутствуют в обоих массивах А и В в нескольких экземплярах

10

Слиянием

Двоичный

элементы, которые присутствуют в нескольких экземплярах в массиве А, но отсутствуют в массиве В

10

Слиянием

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо только в массиве A, либо только в массиве В

10

Слиянием

Двоичный

элементы, которые присутствуют в нескольких экземплярах либо в массиве А, либо в массиве В (либо в обоих массивах)

10

Слиянием

Двоичный

элементы массива А, повторяющиеся в массиве В несколько раз

10

Слиянием

Двоичный

элементы присутствующие в обоих массивах А и В в одном экземпляре

10

Слиянием

Двоичный

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

10

Слиянием

Двоичный

повторяющиеся элементы массива А, которые есть в массиве В

10

Слиянием

Двоичный

повторяющиеся элементы массива В, которые есть в массиве А только в одном экземпляре

10

Слиянием

Двоичный

неповторяющиеся элементы массива А, которые присутствуют в массиве В в нескольких экземплярах

10

Слиянием

Двоичный

элементы массива А в одном экземпляре, которые присутствуют в массиве В в нескольких экземплярах

10

Слиянием

Двоичный

повторяющиеся элементы массива А, которых нет в массиве В

10

Слиянием

Двоичный