||I don't want to be picky, but I think the sample code in the tutorial should be more precise. For bubble sort, the upper bound of the loop index should be something like this:
for (int i = 0; i < data.Length - 1; i++)
for (int j = 0; j < data.Length - 1 - i; j++)
Though it's obvious to experienced coders like the tutorial's author, the educational material is kind of for the beginners.