【发布时间】:2017-05-20 12:25:49
【问题描述】:
谁能告诉我这个算法的时间复杂度是多少? 请记住:第二种方法 (findMax) - 根据它获得的索引在数组上运行,这意味着方法 (findMax) 不会每次都在所有数组上运行。 我认为这个算法的时间复杂度是 O(n) 但也许我错了。
public class Q2 {
public static int[] replace(int []a)
{
for(int i = 0; i < a.length; i++ ){
if(i == a.length-1){
a[i] = 0;
}
int maxSubArry = findMax(a,i);
swap (a, i, maxSubArry);
}
return a;
}
public static int findMax (int[]a, int i)
{
// i = i +1;
int tmp = 0;
for(i = i +1; i<a.length; i++)
{
if(a[i] > tmp)
tmp = a[i];
}
return tmp;
}
public static void swap(int[]a, int i, int maxSubArry)
{
int temp = a[i];
a[i] = maxSubArry;
a[i+1] = temp;
}
}
【问题讨论】:
标签: java algorithm time big-o complexity-theory