在许多数组中,我需要长度直到最大值而不使用sort和
{6,8,2,7,10,3,1}
是否可以返回max-first minimum是该数组(10-2 = 8)?
答案 0 :(得分:1)
一个简单的解决方案就是函数 Array.short ,你可以这样做:
/*Code not tested*/
Arrays.sort(array);
System.out.println(array[0]); //min value
System.out.println(array[array.length-1]); //max value
您可以在此处查看有关此功能的更多信息:Java: Sort an array
修改强>
如果你无法排序,你可以在这里使用算法一个很好的例子http://www.java2novice.com/java-sorting-algorithms/bubble-sort/
答案 1 :(得分:0)
最简单的代码使用IntStream#summaryStatistics():
IntSummaryStatistics stats = IntStream.of(intArray).summaryStatistics();
int maxDiff = stats.getMax() - stats.getMin();
这种方法具有O(n)时间复杂度,优于排序数组的O(n log n)时间复杂度。
有更快的O(n)算法,只是计算最大差异,但这种方法可能足以满足大多数目的。