我是C++的初學者和學習算法分析: 我正在寫一個方法,它返回一個2d數組的最大行數爲1,每行從輸入陣列所有排序並擊中0時全爲1分的有幾分像C++:我如何計算一個方法的成本(算法分析)
1,1,1,0,0
1,1,0,0,0
1,1,1,1,0
1,0,0,0,0
1,1,1,1,1
前面的方法將從這個數組返回5和這裏是代碼:
int countone(int a[][]){
int count = 0, column = 0, row = 0, current = 0, max;
bool end = true;
do{
if(a[row][column]==1)
{
current++;
column++;
}
if(a[row][column]==0)
{
column=0;
if(count<current)
{
count = current;
max = row;
current = 0;
}
row++;
if(a[row][column] != 1 && a[row][column] != 0)
{
end = false;
return max;
}
}
while(end)
代碼不是招沒有經過測試,所以它可能包含錯誤和錯誤,但這不是主要問題。 我想知道這種方法的成本,但我不知道如何計算它。
我想要的成本是運行時間T(n)和大哦表示法。如果可能,該方法應該在O(n)時間內運行(而不是O(n^2))
定義成本。時鐘週期?緩存命中/未命中?執行時間處理時間?大O符號? – Breakthrough 2012-03-07 13:21:06
成本取決於你的小時費率;-) – JRL 2012-03-07 13:23:22
你的問題是非常模糊的,但我會認爲在最壞的情況和平均情況下,通過計算任務,索引,增量的數量(這應該不會後bin後綴)將是要走的路。 – 2012-03-07 13:31:11