Я написал функцию сортировки штампов времени (hh:mm:ss)
в порядке от старых до новейших. Мне интересно узнать приблизительное худшее время работы моего кода, но я не знаю, как это определить.Время работы алгоритма сортировки
Мое приблизительное предположение: O(n-1)^2
из-за вложенных for loop
. Я прав ?
Если нет, то может ли кто-нибудь определить, какое будет приблизительное время работы моего кода в Big O
?
public void sortTimeStamp(SortTime timestamps[])
{
for(int i=0;i<timestamps.length-1;i++)
{
for(int j=0;j<timestamps.length-1;j++)
{
if(timestamps[j].hour > timestamps[j+1].hour)
{
swap_timestamps(timestamps, j);
}
else
if(timestamps[j].hour == timestamps[j+1].hour)
{
if(timestamps[j].minutes > timestamps[j+1].minutes)
{
swap_timestamps(timestamps, j);
}
else
if(timestamps[j].minutes == timestamps[j+1].minutes && timestamps[j].seconds > timestamps[j+1].seconds)
{
swap_timestamps(timestamps, j);
}
}
}
}
}
функция Своп
public void swap_timestamps(SortTime timestamps[], int index)
{
SortTime temp = timestamps[index];
timestamps[index] = timestamps[index+1];
timestamps[index+1] = temp;
}
why' for (int i = 0; i <4; i ++) '? это означает, что в вашем массиве всегда будет 4 элемента d? – jsalatas
Да, это выглядит как «O (n^2)», предполагая, что ваши петли намереваются перебирать всю длину объекта/коллекции SortTime. –
https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/ – Chewtoy