用于查找数组的最小和最大元素的高效算法

时间:2015-04-08 16:44:36

标签: java algorithm

我试图为我一直在使用的算法实现时间复杂度O(n log n)。它的作用是查看数字列表,首先是最高数字,最低数字和从两者获得的利润。如何修改我的代码以获得我正在寻找的时间复杂度?

代码:

while (i < a.length)
      {
         for (int j = i; j < a.length; j++)
         {
            if(a[j] - a[i] > profit)
            {
               lowestIndex = i;
               highestIndex = j;
               profit = a[j] - a[i];
            }
         }  
         i++;
      }  

1 个答案:

答案 0 :(得分:1)

Arrays.sort()是一个排序函数,据说可以在O(n log n)运行。

您可以查看Arrays API以获取更多信息。 https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort(int[])

对于代码,我会以这种方式实现它。我不知道这是否是最有效的实施方式。

Arrays.sort(a); // sort in ascending order
profit = a[a.length-1] - a[0];