First off, you need to define - or even work out - what the new order should be, and why: there is nothing at all obvious about your example which shows why the new order should be "fourth digit first, then the first, the fifth to follow that, ..."
Once you know the order, it's pretty trivial.
Assuming your order is in an array of ints:
int[] order = {4, 1, 5, 2, 3, 6, 7, 8, 9, 10};
and your "given number" is in a string:
string input = "9966234340";
Then just create a char array with the same number of values as the input:
char[] output = new char[input.Length];
A simple loop will reorder them:
for (int i = 0; i < input.Length; i++)
{
output[i] = input[order[i] - 1];
}
And finally turn it back to a string:
string result = new string(output);