static void coin(int[] d, int amount) {
int num_coin;
for (int i = d.length - 1; i >= 0; i--) {
num_coin = amount / d[i];
System.out.println("You should give " + num_coin + " coins of denomination " + d[i]);
amount = amount % d[i];
}
}
根据我发送此算法的内容,这是否会改变它的大O?意思是,如果我发送的总数为1的1,它将运行O(1)时间,对吗?如果我一共发送{1}到5,那是O(5)还是O(n)?
如果我发送{1,4,16,64}来寻找总数55,那O(n)还是吗? n是数组中的总数
答案 0 :(得分:2)
算术运算(+,-,/,*)具有O(1)
您正在遍历int数组d
,该数组会产生复杂的O(循环中的项)
假设n是int数组d中的项数,则该算法的最终Big O可以写为O( N + 1 + 1) = O(n)
要解决您的问题,您将不会基于数量的值来影响此算法的复杂性,重要的是循环运行的次数,在这种情况下,循环的次数是固定的(即,不是恒定的)