2014-12-05 32 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));