1. 30--5--94 6294 1234 61--2--34 2. 5 10 15 20 25 30 5 10 40 35 10*** 5 10 40 35 25 30 3. // {7, 6, 5, 4, 3, 2, 1, 0} void rotate_left( int a[], int n, int p ) { int b[n]; int k = n - p; for ( int i = 0 ; i < n ; i++ ) // O(n) { b[k] = a[i]; if ( ++k == n ) { k = 0; } } // copy values back into a for ( int i = 0 ; i < n ; i++ ) { // O(n) a[i] = b[i]; } } O(2n) = O(n) 4. 10 16 18 43 50 60 65 66 68 85 99 Comparing 85 with 60... Comparing 85 with 68... Comparing 85 with 85... 1 Comparing 49 with 60... Comparing 49 with 18... Comparing 49 with 50... Comparing 49 with 43... 0 5. bool is_empty( const vector& v ) { return ( v.size() == 0 ); } // e.g. {7,6,5,4,3} ==> {7,6,5,4,3,0.0} // ==> {x,7,6,5,4,3} void push_front( vector& v, double x ) { unsigned int n = v.size(); v.push_back( 0.0 ); // extend vector v to // be size n+1 (using // 0.0 as a "dummy" value) for ( unsigned int i = n ; i > 0 ; i-- ) { v[i] = v[i-1]; } v[0] = x; } double pop_front( vector& v ) { if ( is_empty( v ) ) { return 0; } else { double temp = v[0]; for ( int i = 0 ; i < v.size() ; i++ ) { v[i] = v[i+1]; } v.pop_back(); return temp; } } bool insert( vector& v, double x, int j) { if ( j > v.size() || j < 0 ) { return false; } else if ( j == v.size() ) { v.push_back( v ); return true; } else { unsigned int n = v.size(); v.push_back( 0.0 ); for ( unsigned int i = n ; i > j ; i-- ) { v[i] = v[i-1]; } v[j] = x; return true; } } int main() { Sudoku s; // is there a default constructor?