Если вы недостаточно разбираетесь в основной теории, чтобы напрямую применять анализ @ MohamedEnnahdiElIdri, почему бы просто не начать с тестирования кода?
Обратите внимание, что границы цикла зависят только от длины массива. , а не его содержание, поэтому в отношении сложности времени не имеет значения, что делает алгоритм. Вы могли бы также проанализировать временную сложность
public static long countwhat(int length) {
long count = 0;
for (int i = 0; i < length; i++) {
for (int j = i; j < length; j++) {
for (int k = i + 1; k <= j; k++) {
count++;
}
}
}
return count;
}
Глядя на это, легче ли вывести гипотезу? Если нет, просто проверьте, пропорционально ли возвращаемое значение length
в квадрате или length
в кубе ...
public static void main(String[] args) {
for (int l = 1; l <= 10000; l *= 2) {
long count = countwhat(l);
System.out.println("i=" + l + ", #iterations:" + count +
", #it/n²:" + (double) count / l / l +
", #it/n³:" + (double) count / l / l / l);
}
}
... и обратите внимание, что одно значение не приближается к какой-либо константе с ростом l
, а другое (не случайно, к той же самой константе, связанной с наибольшей степенью $ n $ в методологическом анализе).
Вы не можете; нет синтаксиса для обновления «более одной изменяемой переменной» с помощью одного присваивания. Конечно, вы можете сделать
let newX, newY = Swap(x,y)
x <- newX
y <- newY
Чтобы расширить ответ Роберта:
let swap (x : int, y : int) = y, x
let mutable x = 5
let mutable y = 10
let mutable xy = x, y
xy <- swap xy
Делает как переменные, так и кортеж изменяемыми.
Код, который вы прокомментировали, не работает, потому что, когда вы пишете «x, y», вы создаете новый кортеж, который является неизменным значением, поэтому его нельзя обновить. Вы можете создать изменяемый кортеж, а затем перезаписать его результатом функции подкачки, если хотите:
let mutable toto = 5, 10
let swap (x, y) = y, x
toto <- swap toto
Я бы посоветовал изучить неизменную сторону F #, посмотрите, как вы можете использовать неизменяемые структуры для достижения того, что вы раньше можно было бы использовать изменяемые значения.
Роб