OFFSET
0,4
COMMENTS
MTF sort is an (inefficient) sorting algorithm: the first element that is smaller than its predecessor is moved to front repeatedly until the sequence is sorted.
Conjecture: primes p such that p^4 divides a(p) are the Wolstenholme primes A088164. - Amiram Eldar and Thomas Ordowski, Jan 15 2020
LINKS
Alois P. Heinz, Table of n, a(n) for n = 0..404
Project Euler, Problem 523: First Sort I
Wikipedia, Sorting algorithm
FORMULA
a(n) = a(n-1)*n + (n-1)! * (2^(n-1)-1) for n>0, a(0) = 0.
a(n) = (4*n-3)*a(n-1)-(n-1)*(5*n-7)*a(n-2)+(2*n-2)*(n-2)^2*a(n-3) for n>2.
a(n) ~ 2^n * (n-1)!. - Vaclav Kotesovec, Dec 25 2016
a(n) = n! * Sum_{k=1..n} (2^(k-1)-1)/k = A000142(n)*A330718(n)/A330719(n), for n > 0. - Amiram Eldar and Thomas Ordowski, Jan 15 2020
EXAMPLE
a(0) = a(1) = 0 because 0 or 1 elements are already sorted.
a(2) = 1: [1,2] is sorted and [2,1] needs one move.
a(3) = 9: [1,2,3](0), [1,3,2]->[2,1,3]->[1,2,3](2), [2,1,3]->[1,2,3](1), [2,3,1]->[1,2,3](1), [3,1,2]->[1,3,2]->[2,1,3]->[1,2,3](3), [3,2,1]->[2,3,1]->[1,2,3](2); sum of all moves gives 0+2+1+1+3+2 = 9.
MAPLE
a:= proc(n) option remember;
`if`(n=0, 0, a(n-1)*n + (n-1)! * (2^(n-1)-1))
end:
seq(a(n), n=0..20);
# second Maple program:
a:= proc(n) option remember; `if`(n<3, [0$2, 1][n+1],
(4*n-3)*a(n-1)-(n-1)*(5*n-7)*a(n-2)+(2*n-2)*(n-2)^2*a(n-3))
end:
seq(a(n), n=0..20);
MATHEMATICA
a[0] = 0; a[n_] := a[n] = a[n-1]*n + (n-1)!*(2^(n-1) - 1);
Table[a[n], {n, 0, 20}] (* Jean-François Alcover, May 30 2018 *)
CROSSREFS
KEYWORD
nonn
AUTHOR
Alois P. Heinz, Dec 16 2016
STATUS
approved