我的代码的渐近运行时复杂度是多少?

问题描述

在下面的代码中,我试图找出代码的渐近运行时复杂性,但我不确定

public static int myAlgorithm(List<Integer> myList) {
 if (myList.isEmpty()) {
 return 0;
    } 
 
Collections.sort(myList); // Can assume the sort algorithm is merge sort 

int sum = 0; 
int max = myList.get(myList.size() - 1); 
for (int item : myList) {
 int diff = Math.abs(max - item);
 sum = sum + diff; 
    } 
return sum; 
} 

解决方法

假设您使用的排序是合并排序,则算法的无症状运行时间为O(NlogN)

最复杂的步骤是排序步骤。

此后的代码大约为O(N);寻找最大值时有1个循环和1个直通。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...