Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичні вказівки до практичних робіт.docx
Скачиваний:
32
Добавлен:
07.06.2015
Размер:
3.36 Mб
Скачать

2.5. Поиск в отсортированном массиве

В отсортированном массиве используется дихотомический (бинарный) поиск. При последовательном поиске требуется в среднем n/2 сравнений, где n – количество элементов в массиве. При дихотомическом поиске требуется не более m сравнений, если n- m-ая степень 2, если n не является степенью 2, то n<k=2m.

Массив делится пополам S:=(L+R)/ 2+1 и определяется в какой части массива находится нужный элемент Х. Так как массив упорядочен, то, если a[S]<X – искомый элемент находится в правой части массива, иначе – находится в левой части. Выбранную часть массива снова надо разделить пополам и т. д., до тех пор, пока границы отрезка L и R не станут равны.

1

3

8

10

11

15

19

21

23

37

0

1

2

3

4

5

6

7

8

9

L S R

int b;

cout << "\ nB =?"; cin >> b;

int l = 0, r = n-1, s;

do

{

s = (l + r) / 2;/ / середній елемент

if (a [s] <b) l = s +1;/ / перенести леую кордон

else r = s;/ / перенести праву межу

} while (l! = r);

if (a [l] == b) return l;

else return -1;

...

3. Постановка завдання

Завдання 10.1.

1) Сформувати масив з n елементів за допомогою датчика випадкових чисел (n задається користувачем з клавіатури).

2) Роздрукувати отриманий масив.

3) Виконати видалення зазначених елементів з масиву.

4) Вивести отриманий результат.

5) Виконати додавання зазначених елементів в масив.

6) Вивести отриманий результат.

7) Виконати перестановку елементів у масиві.

8) Вивести отриманий результат.

9) Виконати пошук вказаних в масиві елементів і підрахувати кількість порівнянь, необхідних для пошуку потрібного елемента.

10) Вивести отриманий результат.

11) Виконати сортування масиву зазначеним методом.

12) Вивести отриманий результат.

13) Виконати пошук вказаних елементів у відсортованому масиві і підрахувати кількість порівнянь, необхідних для пошуку потрібного елемента.

14) Вивести отриманий результат.

4. Варіанти

Таблиця 15 – Вихідні данні для завдання 10.1

Варіант

Видалення

Додавання

Перестановка

Пошук

1

Максимальний елемент

К елементів в початок масива

Перевернути масив

перший парний

2

Мінімальний

елемент

К елементів в кінець масива

Зрушити циклічно на M елементів вправо

перший негативний

3

Елемент с заданим номером

N елементів, починая з номеру К

Зрушити циклічно на M елементів вліво

Елемент із заданим ключем (значенням)

4

N елементів, починая з номера K

Елемент з номером К

Поміняти місцями елементи з парними і непарними номерами

Елемент рівний середньому арифметичному елементів масиву

5

Всі парні елементи

К елементів в початок масива

Парні елементи переставити в початок масиву, непарні - в кінець

перший парний

6

Всі елементи з парними індексами

К елементів в кінець масива

Поміняти місцями мінімальний і максимальний елементи

перший негативний

7

Всі непарні елементи

N елементів, починая з номеру К

Позитивні елементи переставити в початок масиву, негативні - в кінець

Елемент із заданим ключем (значенням)

8

Всі елементи з непарними індексами

Елемент з номером К

Перевернути масив

Елемент рівний середньому арифметичному елементів масиву

9

Всі елементи більше середнього арифметичного елементів масиву

К елементів в початок масива

Зрушити циклічно на M елементів вправо

перший парний

10

Максимальний елемент

К елементів в кінець масива

Зрушити циклічно на M елементів вліво

перший негативний

11

Мінімальний

елемент

N елементів, починая з номеру К

Поміняти місцями елементи з парними і непарними номерами

Елемент із заданим ключем (значенням)

12

Елемент с заданим номером

Елемент з номером К

Парні елементи переставити в початок масиву, непарні - в кінець

Елемент рівний середньому арифметичному елементів масиву

13

N елементів, починая з номера K

К елементів в початок масива

Поміняти місцями мінімальний і максимальний елементи

перший парний

14

Всі парні елементи

К елементів в кінець масива

Позитивні елементи переставити в початок масиву, негативні - в кінець

перший негативний

15

Всі елементи з парними індексами

N елементів, починая з номеру К

Перевернути масив

Елемент із заданим ключем (значенням)

16

Всі непарні елементи

Елемент з номером К

Зрушити циклічно на M елементів вправо

Елемент рівний середньому арифметичному елементів масиву

17

Всі елементи з непарними індексами

К елементів в початок масива

Зрушити циклічно на M елементів вліво

перший парний

18

Всі елементи більше середнього арифметичного елементів масиву

К елементів в кінець масива

Поміняти місцями елементи з парними і непарними номерами

перший негативний

19

Максимальний елемент

N елементів, починая з номеру К

Парні елементи переставити в початок масиву, непарні - в кінець

Елемент із заданим ключем (значенням)

20

Мінімальний

елемент

Елемент з номером К

Поміняти місцями мінімальний і максимальний елементи

Елемент рівний середньому арифметичному елементів масиву

21

Елемент с заданим номером

К елементів в початок масива

Позитивні елементи переставити в початок масиву, негативні - в кінець

перший парний

22

N елементів, починая з номера K

К елементів в кінець масива

Перевернути масив

перший негативний

23

Всі парні елементи

N елементів, починая з номеру К

Зрушити циклічно на M елементів вправо

Елемент із заданим ключем (значенням)

24

Всі елементи з парними індексами

Елемент з номером К

Зрушити циклічно на M елементів вліво

Елемент рівний середньому арифметичному елементів масиву

25

Всі непарні елементи

К елементів в початок масива

Поміняти місцями елементи з парними і непарними номерами

перший парний

Завдання 10.2

  1. Дано масив A (N). Знайти:

  2. Дана послідовність дійсних чисел. Вказати ті її елементи, які належать відрізку [c, d].

  3. Дана послідовність цілих позитивних чисел. Знайти твір тільки тих чисел, які більше заданого числа М. Якщо таких немає, то видати повідомлення про це.

  4. Послідовність складається з нулів та одиниць. Поставити в початок цієї послідовності нулі, а потім одиниці.

  5. Дано дійсні числа. Серед них є позитивні і негативні. Замінити нулями ті числа, величини яких по модулю більше максимального числа ().

  6. Дано дійсні числа. Знайти.

  7. У послідовності дійсних чисел є тільки позитивні і негативні елементи. Обчислити добуток від'ємних елементів і твір позитивних елементів. Порівняти модуль з модулем, вказати яке з витвір по модулю більше.

  8. Дан масив дійсних чисел. Серед них є рівні. Знайти перший максимальний елемент масиву і замінити його нулем.

  9. Дана послідовність дійсних чисел. Вставити дійсне число b в неї так, щоб послідовність залишилася неубивающей.

  10. Дано цілі додатні числа. Знайти серед них ті, які є квадратами деякого числа m.

  11. Дана послідовність цілих позитивних чисел. Утворити нову послідовність, викинувши з вихідною ті члени, які дорівнюють.

  12. Біля прилавка магазину вишикувалася черга з n покупців. Час обслуговування i-того покупця одно (i = 1, ..., n). Визначити час перебування-того покупця в черзі

  13. Секретний замок для сейфа складається з 10 розташованих в ряд осередків, в які треба вставити гральні кубики. Але двері відкриваються тільки в тому випадку, коли в будь-яких трьох сусідніх осередках сума точок на передніх гранях кубиків дорівнює 10. (Гральний кубик має на кожній грані від 1 до 6 точок). Напишіть програму, яка розгадує код замка за умови, що два кубики вже вставлені в осередку.

  14. У масиві цілих чисел з кількістю елементів n знайти найбільш часто зустрічається число. Якщо таких чисел декілька, то визначити найменше з них.

  15. Кожен сонячний день равлик, що сидить на дереві, піднімається вгору на 2 см, а кожен похмурий день опускається вниз на 1 см. На початку спостереження равлик знаходилася в А см від землі на В-метровому дереві. Є 30-елементний масив, що містить відомості про те, чи був відповідний день спостереження похмурим або сонячним. Написати програму, що визначає місце розташування равлики до кінця дня спостереження.

  16. Дан цілочисельний масив з кількістю елементів n. «Стисніть» масив, викинувши з нього кожен другий елемент. Примітка: додатковий масив не використовувати.

  17. Заданий масив, що містить кілька нульових елементів. Стиснути його, викинувши ці елементи.

  18. Заданий масив з кількістю елементів N. Сформуйте два масиви: у перший включите елементи вихідного масиву з парними номерами, а в другій - з непарними.

  19. Дана послідовність чисел. Вказати пари чисел, таких, що.

  20. Дано цілі числа. Найменший член цієї послідовності замінити цілою частиною середнього арифметичного всіх членів, інші члени залишити без зміни. Якщо в послідовності декілька найменших членів, то замінити останній по порядку.

  21. Дано цілі числа. Потрібно помножити всі члени послідовності на квадрат її найменшого члена, якщо, і на квадрат її найбільшого члена, якщо.

  22. Дано цілі числа і. Перетворити послідовність за правилом: якщо, то збільшити в 10 разів, інакше замінити нулем (i = 1, 2, ..., n).

  23. Дано координати n точок на площині (n  30). Знайти номери пар точок, відстань між якими найбільше (вважати, що така пара єдина).

  24. Дана послідовність з n різних цілих числі. Знайти суму її членів, розташованих між максимальним і мінімальним значеннями (у суму включити і обидва ці числа).

  25. У одновимірному масиві всі негативні елементи перемістити в початок масиву, а решта - в кінець із збереженням порядку проходження. Додатковий масив використовувати не дозволяється.