From 7c50f9b426750e02525c24d1757ca95e8ad6c9f0 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 15 Dec 2019 18:39:24 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=BD=D1=83=D0=B6=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index 56a6051..0000000 --- a/test.txt +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file From ab8d73a6beb72bae89f0030f9bb613bb08ef36cd Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 27 Dec 2019 20:58:46 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=92=D1=81=D0=B5=20=D1=81=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task01.py | 24 ++++++++++++++++++++++++ task02.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ task03.py | 29 +++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 task01.py create mode 100644 task02.py create mode 100644 task03.py diff --git a/task01.py b/task01.py new file mode 100644 index 0000000..79b93c7 --- /dev/null +++ b/task01.py @@ -0,0 +1,24 @@ +# Задача №1 +# Отсортируйте по убыванию методом пузырька одномерный целочисленный массив, заданный случайными +# числами на промежутке [-100; 100). Выведите на экран исходный и отсортированный массивы. +# Примечания: +# ● алгоритм сортировки должен быть в виде функции, которая принимает на вход массив данных, +# ● постарайтесь сделать алгоритм умнее, но помните, что у вас должна остаться сортировка пузырьком. +# Улучшенные версии сортировки, например, расчёской, шейкерная и другие в зачёт не идут. + + +def sort_(array): + n = 1 + while n < len(array): + for i in range(len(array) - n): + if array[i] > array[i + 1]: + array[i], array[i + 1] = array[i + 1], array[i] + n += 1 + #print(array) + + +import random +array = [random.randint(-100, 100) for _ in range(10)] +print("Неотсортированный массив", array) +sort_(array) +print("Отсортированный массив", array) diff --git a/task02.py b/task02.py new file mode 100644 index 0000000..7876883 --- /dev/null +++ b/task02.py @@ -0,0 +1,46 @@ +# Задание №2 +# Отсортируйте по возрастанию методом слияния одномерный вещественный массив, заданный случайными +# числами на промежутке [0; 50). Выведите на экран исходный и отсортированный массивы. + +import random + + +array = [float('%.2f'%(random.uniform(0, 49))) for _ in range(10)] +#array = [6, 8, 3, 0, 9, 1, 2, 7, 4, 5] + + +def merge(a, left, mid, right): + it1 = 0 + it2 = 0 + result = [0 for _ in range(right-left)] + while left + it1 < mid and mid + it2 < right: + if a[left + it1] < a[mid + it2]: + result[it1 + it2] = a[left + it1] + it1 += 1 + else: + result[it1 + it2] = a[mid + it2] + it2 += 1 + + while left + it1 < mid: + result[it1 + it2] = a[left + it1] + it1 += 1 + + while mid + it2 < right: + result[it1 + it2] = a[mid + it2] + it2 += 1 + + for i in range(it1 + it2): + a[left + i] = result[i] + +def mergeSort(a): + i = 1 + while i <= len(a): + j = 0 + while j <= len(a) - i: + merge(a,j,j+i,min(j+2*i,len(a))) + j += 2 * i + i *= 2 + +print('Неотсортированный:', array) +mergeSort(array) +print('Отсортированный:', array) \ No newline at end of file diff --git a/task03.py b/task03.py new file mode 100644 index 0000000..8876b6f --- /dev/null +++ b/task03.py @@ -0,0 +1,29 @@ +# Задание №3 +# Массив размером 2m + 1, где m — натуральное число, заполнен случайным образом. Найдите в массиве +# медиану. Медианой называется элемент ряда, делящий его на две равные части: в одной находятся +# элементы, которые не меньше медианы, в другой — не больше медианы. +# +# Примечание: задачу можно решить без сортировки исходного массива. Но если это слишком сложно, +# используйте метод сортировки, который не рассматривался на уроках (сортировка слиянием также +# недопустима). + + +import random + +m = int(input('Введите m')) +array = [random.randint(0, 10) for _ in range(2*m+1)] +print(array) + +#array = [6, 0, 3, 9, 4, 4, 4, 4, 5] + +for inx_i,i in enumerate(array): + count_l = 0; count_g = 0; count_e = 0; + for inx_j,j in enumerate(array): + if inx_i != inx_j: + count_l += 1 if i < j else 0 + count_g += 1 if i > j else 0 + count_e += 1 if i == j else 0 + if count_l == count_g or min(count_l, count_g)+count_e >= max(count_l, count_g): + print('Медина: ', i) + break +