我有一些问题要处理,我对他们的工作方式有一个很好的理解我只想要反馈我是否正确。我需要弄清楚以下的大记法。
1
public static int[] mystery1(int[] list) {
int[] result = new int[2*list.length];
for (int i=0; i<list.length; i++) {
result[2*i] = list[i] / 2+list[i] % 2;
result[2*i+1] = list[i] / 2;
}
我认为这个是Nlog(N)
2
public static int[] mystery2(int[] list) {
for (int i=0; i<list.length/2; i++) {
int j = list.length-1-i;
int temp = list[i];
list[i] = list[j];
list[j] = temp;
}
return list;
}
我认为这个将是O(logN),因为它在完成之前潜水2
3
public static void mystery3(ArrayList<String> list) {
for (int i=0; i<list.size-1; i+=2) {
String first = list.remove(i);
list.add(i+1, first);
}
}
我认为这个是O(N)
4
public static void mystery4(ArrayList<String> list) {
for (int i=0; i<list.size-1; i+=2) {
String first = list.get(i);
list.set(i, list.get(i+1));
list.set(i+1, first);
}
}
我认为这个是O(N)。
答案 0 :(得分:1)
所有都是O(N),除了Mystrey3是O(N ^ 2)=由于add.list