引用:
作者darkangel
一般 i++ loop 的時間複雜度是 O(n),而像這種迴圈最大值很小(<100)的狀況下通常會比用倍數迴圈的 O(log n) 快。
另外,不應該在這裡考慮效能問題,瓶頸不太可能會出現在這。
以我n年的實務經驗,我覺得設計時有兩個重點,分享一下:
1. 不要過度設計
2. 不要在設計時考慮效能問題,不然容易失去重點
我不熟 java,不然我給的答案應該也是 loop + if/else。
|
我是這樣的意思..
double[] a = { 6.5, 9, 6.5, 9.5, 6.5, 6.5, 0,
6.5, 6.5, 6.5, 6, 9.5, 6.5, 0,
6.5, 9, 6.5, 6, 6.5, 0, 6.5,
6.5, 6.5, 6.5, 6.5, 6.5, 0, 6.5,
0, 0, 0 };
int len = a.Length;
int t = 7;
for (int i = 1; t <= len; )
{
var val = a[t - 1];
if (val == 0)
Console.WriteLine("第{0}天 : 假日", t);
// end if
i++;
t *= i;
} // end if
顯然迴圈是大幅降低..
不過如果摟主的條件是假日非固定性了..
那將需要另外再評估...