Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions task_7_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import random


def bubble_sort(arr):
n = 1
while n < len(arr):
count = 0
for i in range(len(arr) - 1 - (n - 1)):
if arr[i] < arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
count += 1
if count == 0:
break
n += 1


SIZE = 10
MIN_ITEM = -100
MAX_ITEM = 99
array = [random.randint(MIN_ITEM, MAX_ITEM) for _ in range(SIZE)]

print(f'Массив до сортировки: {array}')
bubble_sort(array)
print(f'Массив после сортировки: {array}')
34 changes: 34 additions & 0 deletions task_7_2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import random


def merge_sort(arr):
def merge(fst, snd):
res = []
i, j = 0, 0
while i < len(fst) and j < len(snd):
if fst[i] < snd[j]:
res.append(fst[i])
i += 1
else:
res.append(snd[j])
j += 1
res.extend(fst[i:] if i < len(fst) else snd[j:])
return res

def div_half(lst):
if len(lst) == 1:
return lst
elif len(lst) == 2:
return lst if lst[0] <= lst[1] else lst[::-1]
else:
return merge(div_half(lst[:len(lst)//2]), div_half(lst[len(lst)//2:]))
return div_half(arr)


SIZE = 10
MIN_ITEM = 0
MAX_ITEM = 50
array = [random.uniform(MIN_ITEM, MAX_ITEM) for _ in range(SIZE)]

print(f'Массив до сортировки: {array}')
print(f'Массив после сортировки: {merge_sort(array)}')
27 changes: 27 additions & 0 deletions task_7_3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import random


def median(array, k):
if len(array) == 1:
return array[0]

spam = random.choice(array)
left_el = [el for el in array if el < spam]
right_el = [el for el in array if el > spam]
spam = [el for el in array if el == spam]

if k < len(left_el):
return median(left_el, k)
elif k < len(left_el) + len(spam):
return spam[0]
else:
return median(right_el, k - len(left_el) - len(spam))


M = 7
lst = [random.randint(0, 50) for _ in range(2 * M + 1)]
print(f'Исходный массив:\n{lst}')
print(f'Медианой является:\n{median(lst, len(lst) / 2)}')
lst.sort()
print(f'Массив после сортировки:\n{lst}')
print(f'Медианой является:\n{lst[len(lst) // 2]}')