The doc states that bringToFront() returns the number of elements brought to the front, but it actually returns the number of swaps done: -------------------- import std.algorithm, std.stdio; void main() { auto r = [4, 5, 6, 7, 0, 1, 2, 3]; foreach (k; 0 .. r.length) writeln(bringToFront(r, r[k .. $])); } -------------------- % dmd -run test.d 0 7 6 7 4 7 6 7 -------------------- The output should be "0 7 6 5 4 3 2 1".
Good catch. Shin, feel free to take this over if you plan to fix it.
All right, I'll fix it.
Fixed in the svn trunk r2103.