Insertion sort revised with output to console
One obvious optimization is to avoid many unnecessary swaps:

        int j;
        value_to_insert = inputArray[i];
        for (j = i; j &gt; 0; j--)
        {
            if (inputArray[j - 1] &gt; value_to_insert)
            {
                inputArray[j] = inputArray[j - 1];
            }
        }
        inputArray[j] = value_to_insert;


Just one assignment instead of 3.

Besides (sorry for repeating my mantra on a naked loops), now it becomes obvious that an inner loop implements some sort of a shift algorithm. Better to factor it out.

It is also very well possible that separating find and shift phases may also speed it up:

        value_to_insert = inputArray[i];
        int j = upper_bound(inputArray, inputArray + i, value_to_insert);
        shift(inputArray + j, input_array + i, 1);
        inputArray[j] = value_to_insert;


because both methods could be implemented as intrinsics.