我不知道为什么下面的算法的运行时间是O(nlogn)。有谁能帮帮我吗?
public static boolean unique2(int[] data) {
int n= data.length;
int[] temp= Arrays.copyOf(data,n);
Arrays.sort(temp);
for (int j=0; j<n-1;j++)
if (temp[j]==temp[j+1])
return false;
return true;
}
发布于 2021-01-03 20:08:15
该算法包括两个主要部分:
int[]
数组的标准Arrays.sort
对数组进行排序。在底层,它使用了平均O(n log n)
时间复杂度的双轴心快速排序算法。
for
循环在排序数组中查找任何具有O(n)
复杂度的重复值,这些值被更大的排序复杂度“吸收”。因此,由此产生的复杂性是O(n log n)
。
https://stackoverflow.com/questions/65549548
复制相似问题