タイムスタンプ(hh:mm:ss)
を古いものから順番にソートする関数を書いた。私はコードの実行時間のおおよその最悪のケースを知ることに興味がありますが、それをどのように判断するのか分かりません。ソートアルゴリズムの実行時間
ネストされたfor loop
のため、私のおおよその推測はO(n-1)^2
です。私は正しいですか?
もしそうでなければ、誰かが私のコードのおおよその実行時間は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;
}
なぜfor(int i = 0; i <4; i ++) '?これはあなたの配列には常に4つの要素があることを意味しますか? – jsalatas
はい、あなたのループが 'SortTime'オブジェクト/コレクションの全長にわたって反復しようとしていると仮定すると、' O(n^2) 'と思われます。 –
https://rob-bell.net/2009/06/a-beginners-guide-to-bigo-o-notation/ – Chewtoy