Java 如何找到数组中相邻两个数字之间的最小距离?
我有一个排序数组。假设它是Java 如何找到数组中相邻两个数字之间的最小距离?,java,arrays,algorithm,Java,Arrays,Algorithm,我有一个排序数组。假设它是int[]numArr=newint[]{6,9,10,27} 最小的距离在9和10之间,它是1。程序应打印此1 我不需要代码,但我希望有人能告诉我如何继续。公共静态final int findsmalletdistance(final int[]pArray){ int lMinimumDistance=Integer.MAX_值; 对于(int i=1;i
int[]numArr=newint[]{6,9,10,27}代码>
最小的距离在9和10之间,它是1。程序应打印此1
我不需要代码,但我希望有人能告诉我如何继续。公共静态final int findsmalletdistance(final int[]pArray){
int lMinimumDistance=Integer.MAX_值;
对于(int i=1;i
声明一个变量以保持当前最小距离。它可以初始化为一个非常大的数整数.MAX\u值
,以便计算的第一个距离成为初始最小距离
使用for
循环对值进行循环。您将在当前索引和下一个索引处访问元素,因此请尽早停止for
循环,以防止出现ArrayIndexOutOfBoundsException
在for
循环中,计算差值。如果差值小于当前最小值,则将当前最小值更新为当前差值。步骤1:创建变量以保存实际最小距离
第2步:遍历数组
第3步:将您的实际数字与数组中的上一个数字进行比较(如果这是此步骤中跳转的第一个元素),如果它小于最小值,则保存结果
第4步:如果数组有更多元素,则获取下一个元素,否则打印结果
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);
for(int i=0;i 如果(数组[i+1]-array[i]这里有一些伪代码:
最小=一个肯定比你要找的数字大的数字
对于数组中的每个元素i,第一个元素除外
Be n = array[i] - array[i-1]
If n < smallest then
smallest = n
End If
Be n=array[i]-array[i-1]
如果n<最小,则
最小=n
如果结束
结束于intNumarr[]={6,9,10,27};
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]));
}
}
对于(int i=0;i0){
System.out.println(“在“+numar[i]+”和“+numar[i+1]+”之间的距离是:”+(numar[i+1]-numar[i]);
}
}
在数组上循环,检查项[n]-项[n+1]
,假设一个排序的升序数组,并存储最小的结果。项[n]-项[n+1]
将给您提供负数…如果最小值为100001呢?可能应该停在array.length-1以避免超出范围。我接受您的答案不是因为它100%有效,而是您帮助我澄清了这个概念。但是array.length超出了数组,因此,我将其修改为array.length-1。我定义了smallest integer到integer.MAX_值。谢谢你的帮助,xoxo。@StevenAkaTaz你最好按照Simon在评论中所说的对答案进行更正。勾出选中的、错误的答案。谢谢你不必要的否决票。
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]));
}
}