2016-10-28 90 views
-3

我想寫一個函數來查找數組中的最小值,但我無法弄清楚我所做的錯誤。有人可以看看嗎?謝謝!!!查找數組中的最小值

void smallest(int array[],int size) 
    { 
     int smallest=array[0]; 
      for (int i=1;i<size-1;i++) 
       { 
       if (array[i]<smallest) 

       smallest=array[i]; 

       } 
     cout<<smallest<<'\n'; 

    } 

該代碼不會執行,因爲有斷點,我看不出問題在哪裏。

+2

使用調試器在您的代碼中找到「斷點」。檢查所有涉及的變量的值,並確保它們是有效的。 *請*嘗試創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示,向我們展示如何使用和調用此函數以及使用什麼值。 –

+1

' George

+0

你有沒有堆棧跟蹤 –

回答

0

您可以在這裏找到更有效的解決方案:
Finding smallest value in an array most efficiently

代碼片段:

int smallest = array[0]; 
for (int i = 0; i < array_length; i++) { 
    if (array[i] < smallest) { 
     smallest = array[i]; 
    } 
} 
+1

與提問無異 –

0

你的循環是不會到你的數組的最後一個元素。您應該刪除條件的負1。並且毫不猶豫地測試收到的參數的值:

void smallest(int array[], int size) 
{ 
    if (size <= 0 || !array) 
     return; 
    int smallest = array[0]; 
    for (int i = 1; i < size ; i++) 
     if (array[i] < smallest) 
      smallest = array[i]; 
    cout << smallest << '\n'; 
}