我试图为我一直在使用的算法实现时间复杂度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++;
}
答案 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];