•Here is a more efficient
version (nearly twice as fast, but harder to understand)
•
• template <typename Item>
• void insertionsort( Item a[], int left, int right)
• {
• for ( int i = right; i > left; i-- )
• {
• if ( a[i-1] < a[i])
• {
• swap( a[i-1], a[i]);
• }
• }
• for ( int i = left + 2; i <= right; i++ )
• {
• int j = i; Item v = a[i];
• while( v < a[j-1])
• {
• a[j] = a[j-1];
• j--;
• }
• a[j] = v;
• }
• }