практикумы по языку Питон. Питон. Практикум Загидуллин Наиль Рашитович мбоу сош 2 Оглавление Введение в Питон 4 Команда вывода 4
Скачать 7.93 Mb.
|
Метод половинного деления (Двоичный или бинарный поиск)
Задача1: Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые Вася отвечает "да" или "нет") Петя может угадать Васино число? n=int(input()) k=0 d=0 while n>1: d=n%2 n//=2 k+=1 if d==1: n+=1 print(k) Задача2.1: Имеется отсортированный список из чисел. Нужно выяснить имеется ли там число n. Самый тривиальный способ — это перебирать массив (линейный поиск). Но если список большой, то поиск будет не эффективной. Способ 1
import random L = 1 R = 20 Mid = 0 n, x = 3, 0 m =[random.randint(1,5) for i in range(20)] m.sort() print(m) while R > L: Mid = (R+L)//2 if m[Mid] == n: x = n print("yes") break else: if n < Mid: R = Mid - 1 else: L = Mid + 1 if x == 0: print("no") Способ 2 Для двоичного поиска в Питоне можно использовать модуль bisect Задача 2.2 Имеется отсортированный список из чисел. Нужно вставить в список число, не нарушая сортировку. import bisect, random left=1 right=10 m=[] for i in range(left,right): m.append(random.randint(1,50)) m.sort() x=int(input()) k = bisect.bisect_left(m, x) m.insert(k,x) print(m) Решите задачи: Урок 3.4 Задача3
1 Решите эту задачу, используя модуль bisect Урок 3.5 2 Первый нуль. Дан массив, нужно найти позицию первого нуля. Счет с нуля! [1111111111110111], ответ: 12 3 Первый чётный. Дан массив чисел, первая часть состоит из нечетных чисел, а вторая - из четных. Найти индекс, начиная с которого все числа четные. |