如何在阵列中找到彼此相邻的两个数字之间的最小距离?

时间:2014-12-04 21:35:24

标签: java arrays algorithm

我有一个排序数组。我们说它是int [] numArr=new int[]{6, 9, 10, 27};

最小距离介于9和10之间,它是1.程序应该打印1。

我不期待代码,但我希望有人可以告诉我如何继续。

6 个答案:

答案 0 :(得分:2)

声明一个变量来保持当前的最小距离。它可以初始化为一个非常大的数字Integer.MAX_VALUE,以便计算出的第一个距离成为初始最小距离。

使用for循环遍历值。您将访问当前索引和下一个索引处的元素,因此请尽早停止for循环以阻止ArrayIndexOutOfBoundsException

for循环中,计算差异。如果差值小于当前最小值,则将当前最小值更新为当前差值。

答案 1 :(得分:0)

public static final int findSmallestDistance(final int[] pArray) {
    int lMinimumDistance = Integer.MAX_VALUE;
    for(int i = 1; i < pArray.length; i++) {
        int lDifference = pArray[i] - pArray[i - 1];
        if(lDifference < lMinimumDistance) {
            lMinimumDistance = lDifference;
        }
    }
    return lMinimumDistance;
}

答案 2 :(得分:0)

第1步:创建一个变量来保存实际的最小距离

第2步:遍历您的数组

第3步:将您的实际数字与数组中的前一个数字进行比较(如果这是第一个跳过此步骤的元素),如果它小于您的最小值,则保存结果

第4步:如果数组中有更多元素,请获取下一个元素,否则打印结果

答案 3 :(得分:0)

这是一些伪代码:

最小=一个肯定大于你正在寻找的数字

对于除第一个

之外的数组中的每个元素
Be n = array[i] - array[i-1]

If n < smallest then

    smallest = n

End If

结束

答案 4 :(得分:0)

int numArr[] = {6, 9, 10, 27};
    for(int i=0;i<numArr.length-1;i++){
        if(numArr[i+1]-numArr[i]>0){
            System.out.println("distance between " +numArr[i]+ " and "+numArr[i+1]+ " is: "+ (numArr[i+1]-numArr[i]));
        }
    }

答案 5 :(得分:-2)

int smallest = 100000   

 for (int i = 0; i < array.length; i++)

    if(array[i+1]-array[i]<smallest)
     {
       smallest = array[i+1]-array[i];
     }

System.out.println(smallest);