2012-09-16 36 views
1

我需要做兩件事情的陣列C中的數組的非零項:求和發現用C

  1. 總結其條目。
  2. 查找所有非零條目的位置。

我正在通過循環遍歷數組的每個元素。例如。

int sum_array(int a[], int num_elements) 
{ 
    int i, sum=0; 
    for (i=0; i<num_elements; i++) 
    { 
    sum = sum + a[i]; 
    } 
    return(sum); 
} 

有關任務2,I將被檢查,如果該條目是0。如果沒有,添加它的位置到另一個陣列將其標記爲非零。

問題

是否有做這些的更有效的方法?

如果在那裏有更高效的解決方案,我也使用GNU科學圖書館(GSL)。我最近剛剛開始C。

+5

你的方法是合理的。只有在遇到性能問題時才嘗試開始優化。 – Gregor

+0

+1感謝您的快速響應。 :) – Legendre

回答

0

根據Gregor,EvilTeach和我自己的一些Google搜索的評論,我的方法是可以接受的。

0

對於第2部分,您並不需要做任何工作。

如果數組中的值爲零,則它將評估爲false。任何非零值將評估爲true。所以你可以隨時遍歷數組,並忽略零值。

+0

謝謝,但我特別需要找到陣列中非零條目的位置。 – Legendre