-
Notifications
You must be signed in to change notification settings - Fork 76
Expand file tree
/
Copy pathtask_4.py
More file actions
56 lines (44 loc) · 2.01 KB
/
task_4.py
File metadata and controls
56 lines (44 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""
Задание 4.
Приведены два алгоритма. В них определяется число,
которое встречается в массиве чаще всего.
Сделайте профилировку каждого алгоритма через timeit
Попытайтесь написать третью версию, которая будет самой быстрой.
Сделайте замеры и опишите, получилось ли у вас ускорить задачу.
"""
import timeit
array = [1, 3, 1, 3, 4, 5, 1, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8]
def func_1():
m = 0
num = 0
for i in array:
count = array.count(i)
if count > m:
m = count
num = i
return f'Чаще всего встречается число {num}, ' \
f'оно появилось в массиве {m} раз(а)'
def func_2():
new_array = []
for el in array:
count2 = array.count(el)
new_array.append(count2)
max_2 = max(new_array)
elem = array[new_array.index(max_2)]
return f'Чаще всего встречается число {elem}, ' \
f'оно появилось в массиве {max_2} раз(а)'
def func_3():
new_array = sorted(array)
return f'Чаще всего встречается число {new_array[0]}, ' \
f'оно появилось в массиве {new_array.count(new_array[0])} раз(а)'
print(func_1())
print(func_2())
print(func_3())
print(timeit.timeit("func_1()", setup="from __main__ import func_1", number=1000))
print(timeit.timeit("func_2()", setup="from __main__ import func_2", number=1000))
print(timeit.timeit("func_3()", setup="from __main__ import func_3", number=1000))
"""
0.004593599999999996
0.006162799999999996
0.001634499999999997 Я так понимаю, что функция sorted() реазизована на уровне С-кода и поэтому этот метод получился самым быстрым
"""