Вопрос Очень нужна помощь с программой на python! 1 курс матфака

Регистрация
10 Дек 2013
Сообщения
66
Репутация
-2
Спасибо
0
Монет
0
работаю с библиотекой time.

У меня есть блок def, который выполняет сортировку, к примеру - сортировка пузырчатого вида

def bubble_sort(array):

for i in range(0,len(array)-1):

for j in range(len(array)-1):

if(array[j] > array[j+1]):

temp = array[j]

array[j] = array[j+1]

array[j+1] = temp

return array

Перелистал все ролики и зарубежные форумы, но не нашел ответа: Как я могу посчитать время выполнения данной функции в секундах, формат ответа должен быть просто float числом (секунды, миллисекунды).

Пробовал такой код:

arr = []

start1 = time.ctime()

bubble_sort(arr)

end1 = time.ctime()

total1 = end1 - start1

print(start1, end1)

print(total1)



Формат выдачи start1 и end1 таков: Tue Mar 21 02:00:49 2023 Tue Mar 21 02:00:49 2023

Соответственно, при вычитании end1 и start1 выдает ошибку, поскольку пытаюсь вычитать строки. Как изменить такой формат записи в секунды, и, поскольку время выполнения меньше секунды, как учесть миллисекунды, чтобы при вычитании величин start1 и end1 не был 0?



Если есть знатоки библиотеки time, буду очень благодарен за вашу помощь!
 
Женщин нельзя пускать сюда, а ты женщина
 
[Сгенерировано нейросетью]

import time

def bubble_sort(array):
for i in range(0,len(array)-1):
for j in range(len(array)-1):
if(array[j] > array[j+1]):
temp = array[j]
array[j] = array[j+1]
array[j+1] = temp
return array

arr = []
start_time = time.time()
bubble_sort(arr)
end_time = time.time()
total_time = "%.3f" % (end_time - start_time)
print("Время выполнения: {} секунд".format(total_time))

P.S. Выведет 0, но если использовать массив с более длинной задержкой (а не пустой arr=[]), то будет уже не просто 0.
Например: import time

def bubble_sort(array):
for i in range(0,len(array)-1):
for j in range(len(array)-1):
if(array[j] > array[j+1]):
temp = array[j]
array[j] = array[j+1]
array[j+1] = temp
return array

arr = [5, 4, 3, 2, 1] * 100
start_time = time.time()
bubble_sort(arr)
end_time = time.time()
total_time = "%.3f" % (end_time - start_time)
print("Время выполнения: ", total_time, "секунд")
 
Ответ ИИ (Chat GPT): "Чтобы решить вашу проблему, вам нужно использовать модуль time более правильно. В частности, метод time() этого модуля возвращает количество секунд, прошедших с начала эпохи (1 января 1970 года). Используя этот метод, вы можете измерить время выполнения функции следующим образом:

python
Copy code
import time

def bubble_sort(array):
# тело функции

arr = [5, 4, 3, 2, 1]
start_time = time.time()
bubble_sort(arr)
end_time = time.time()
elapsed_time = end_time - start_time
print(f"Время выполнения: {elapsed_time:.6f} сек.")
В данном примере start_time и end_time представляют собой время в секундах с начала эпохи, которое соответствует моменту перед вызовом функции и после ее выполнения соответственно. Вычитание end_time и start_time дает количество секунд, затраченных на выполнение функции. Функция print() выводит время выполнения в секундах с точностью до 6 знаков после запятой.

Если вы хотите узнать время выполнения функции в миллисекундах, можно умножить результат на 1000:

python
Copy code
elapsed_time = (end_time - start_time) * 1000
print(f"Время выполнения: {elapsed_time:.6f} мс.")
Надеюсь, это поможет вам решить вашу проблему!"
 
Чтобы посчитать время выполнения функции в секундах, можно использовать модуль `time` следующим образом:
import time

def bubble_sort(array):
for i in range(len(array)-1):
for j in range(len(array)-1):
if array[j] > array[j+1]:
temp = array[j]
array[j] = array[j+1]
array[j+1] = temp
return array

arr = [3, 2, 1]

start_time = time.time()
sorted_arr = bubble_sort(arr)
end_time = time.time()

elapsed_time = end_time - start_time

print(f"Sorted array: {sorted_arr}")
print(f"Elapsed time: {elapsed_time:.6f} seconds")

Здесь мы используем функцию `time.time()` для получения текущего времени в секундах с начала эпохи Unix (1 января 1970 года). После выполнения функции сортировки мы снова вызываем `time.time()` и вычитаем из текущего времени начальное время, чтобы получить общее время выполнения функции. Чтобы вывести время с точностью до миллисекунд, мы используем форматированную строку с опцией форматирования `:.6f`, которая указывает, что нужно вывести число с точностью до 6 знаков после запятой.

Надеюсь, это поможет вам решить вашу задачу!
 
Назад
Сверху