From e74a220a6b71997be75ac01b039dc956861f2323 Mon Sep 17 00:00:00 2001 From: m04kA Date: Wed, 1 Jul 2020 16:46:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=B5=D0=B7=203-=D0=B9=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3-ю скоро доделаю. --- .../Home work/hw_task_1.py" | 39 +++++++++++++++ .../Home work/hw_task_2.py" | 49 +++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 "\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_1.py" create mode 100644 "\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_2.py" diff --git "a/\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_1.py" "b/\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_1.py" new file mode 100644 index 00000000..da19733f --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_1.py" @@ -0,0 +1,39 @@ +from random import randint +import time + + +def revers_bubble(mass): + for i in range(len(mass) - 1): + plase = True + for j in range(len(mass) - 1, i, -1): + if mass[j] < mass[j - 1]: + mass[j], mass[j - 1] = mass[j - 1], mass[j] + plase = False + if plase: + break + return mass + + +def revers_bubble_new(mass): + for i in range(len(mass) - 1): + plase = True + for j in range(len(mass) - 1, i, -1): + if mass[j] < mass[j - 1]: + mass[j], mass[j - 1] = mass[j - 1], mass[j] + plase = False + if plase: + break + return mass + + +len_my_mass = int(input('Введите длинну массива: ')) +massive_1 = [randint(1, 20) for _ in range(len_my_mass)] +massive_2 = list(massive_1) +print(massive_1) +start = time.time() +massive_1 = revers_bubble(massive_1) +print(f'Работа пузырька без улучшения: {time.time() - start}') + +start = time.time() +massive_2 = revers_bubble(massive_2) +print(f'Работа пузырька c улучшением: {time.time() - start}') diff --git "a/\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_2.py" "b/\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_2.py" new file mode 100644 index 00000000..bea91c0d --- /dev/null +++ "b/\320\243\321\200\320\276\320\272 7. \320\237\321\200\320\260\320\272\321\202\320\270\321\207\320\265\321\201\320\272\320\276\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265/Home work/hw_task_2.py" @@ -0,0 +1,49 @@ +from random import random + + +def merger(mass): + if len(mass) < 2: + return mass[:] + else: + left_mass = merger(mass[:len(mass) // 2]) + right_mass = merger(mass[len(mass) // 2:]) + return merger_help(left_mass, right_mass) + + +def merger_help(left_side, right_side): + answ = [] + left_idx = 0 + right_idx = 0 + while left_idx < len(left_side) and right_idx < len(right_side): + if left_side[left_idx] < right_side[right_idx]: + answ.append(left_side[left_idx]) + left_idx += 1 + elif left_side[left_idx] > right_side[right_idx]: + answ.append(right_side[right_idx]) + right_idx += 1 + else: + answ.append(right_side[right_idx]) + answ.append(left_side[left_idx]) + right_idx += 1 + left_idx += 1 + while left_idx < len(left_side): + answ.append(left_side[left_idx]) + left_idx += 1 + while right_idx < len(right_side): + answ.append(right_side[right_idx]) + right_idx += 1 + return answ + + +def rand(len_mass): + right = 0 + left = 50 + mass = [float(random() * (right - left)) + left for _ in range(len_mass)] + return mass + + +len_my_mass = int(input('Введите длинну массива: ')) +massive = rand(len_my_mass) +print(massive) +massive = merger(massive) +print(massive)