2014-12-05 77 views
0

我試圖找到數組中的最小數值,但它並不總是正常工作。這是我寫的代碼:查找數組中int數的最小值(Java)

 for (int i=0; i < arr.length; i++) { 
     min = arr[i]; 
     for (j=0; j < arr.length; j++) { 
     if (arr[j] < arr[0]) { 
      min = arr[j]; 
     } 
     } 
    } 

有人可以糾正我嗎?

+0

什麼是for循環 – Joe 2014-12-05 13:36:32

+1

'ARR使用您的外的[j]的 2014-12-05 13:37:31

+1

可能重複[Java:最大/最小值在數組中?](http://stackoverflow.com/questions/1484347/java-max-min-value-in-an-array) – 2014-12-05 13:43:24

回答

3

沒有必要爲外循環,它只能運行一次,你不使用i反正。你爲什麼擁有它?

對於內循環,您需要與最小值進行比較。現在你將它與數組中的第一個元素進行比較,它不一定是最小值。

min = arr[0]; 
for (j=0; j < arr.length; j++) { 
    if (arr[j] < min) { //<---fix is here 
     min = arr[j]; 
    } 
} 

您也可以在1開始循環,因爲你並不需要比較arr[0]對自身(它只是分配給min

1

要檢查在每次迭代中的第一個元素,你基本上需要檢查最小值

if (arr[j] < min) { 
    min = arr[j]; 
} 
1
int min = arr[0]; 
for(int num : arr) { 
    if (num < min){ 
     min = num; 
    } 
} 

分鐘現在包含最小值。

+1

是安全的我會添加空檢查和數組長度檢查。 – Jay 2014-12-05 13:44:02

0

這是一個通用的算法。你可以爲它編寫代碼。

將數組中的第一項存儲爲當前最小值。

從第二項(索引1)開始遍歷數組。

對於數組的每次迭代,檢查當前項目是否比最小值小 。如果是,則將其存儲爲新的最小值。

一旦循環結束,你有最小的!

1

如果arr非原始數字組成的數組,我建議

java.util.Collections.min(java.util.Arrays.asList(arr));

因爲這將是更簡單的維護。如果你需要同時拉出最小值和最大值,那麼在恢復手動編碼方面有一些理由,但如果有可用的庫函數,我建議不要手動編碼循環。

無論如何,你應該檢查arr != null和第零個元素的存在。

0

它將被使用java.util.Arrays中類做的一種方式:

實施例:

public class ArraySort { 
public static void main(String[] args) { 
    int[] array = {12, 4, 6, 1, 56, 21, 77}; 
    Arrays.sort(array); 
    System.out.println(array[0]); 
} 
} 

從Java文檔,Arrays.sort(INT [])指定的數組進行排序按數字升序排列。

所以這裏的輸出打印1。

+0

您正在執行排序操作('O(nlogn)'),但您可以在線性時間內執行。 – 2014-12-05 13:44:46

0

試試這個:

int min = arr[0]; 
    for(int j=1;j<arr.length;j++) 
    { 
      if(min>arr[j]) 
      { 
       min= arr[j]; 
      } 
    } 
    System.out.println("min no is "+min); 
0

一種選擇是那種陣列,並且獲得的第一個元素:

import java.util.Arrays; 

... 

int ints[] = {30,5,7,4,10}; 
Arrays.sort(ints); 

int min = ints[0]; 
int max = ints[ints.length - 1]; 
0
 int min=0; 
     for (int i = 0; i < array.length; i++) { 
     if (min > array[i]) { 
     min = array[i]; 
     } 
} 

    System.out.println(min); 

簡單的方式來獲得MAX和MIN

爲了得到MIN

System.out.println(getMinValue(your array)); 

MAX

System.out.println(getMaxValue(your array));