Can this insertion sort be optimized?
As insertion sort is an O(n2) algorithm, there's not much point to optimizing it.  For any input that is large enough for you to care about the performance, you would want to pick a sorting algorithm with better bounds.  Quicksort, for example, is usually closer to O(n log n).

That said, I'll point out some style issues:


You should never omit optional braces, as you've done for the inner for-loop.  Think of it this way: anytime you omit braces, you're a contributing factor to a future coding accident.  (Apple learned this lesson the hard way; their new swift language requires braces.)
Variables can usually be named better than "temp".  Renaming temp to elementToInsert, for example, would make your code self-documenting.