10.3

  1. 2 6 8 3 1 7 4
    2 6 8 3 1 7 4
    2 3 6 8 1 7 4
    1 2 3 6 8 7 4
    1 2 3 6 7 8 4
    1 2 3 4 6 7 8
  2. The while statement should read as follows:
    while (i > 0 && item > list[i-1])
  3. If an item had to be inserted at the front, the program would crash
  4.  
    class SortingPlanets
    {
       public static void printList (String[] list)
       {
          for (int i = 0 ; i < list.length ; i++)
             System.out.print (list [i] + " ");
          System.out.println ();
       }
    
    
       public static void insertSort (String[] list)
       {
          for (int top = 1 ; top < list.length ; top++)
          {
             String item = list [top];
             int i = top;
             while (i > 0 && item.compareTo (list [i - 1]) < 0)
             {
                list [i] = list [i - 1];
                i--;
             }
             list [i] = item;
             printList (list);
          }
       }
    
    
       public static void main (String[] args)
       {
          String[] planets = {"Mercury", "Venus", "Earth", "Jupiter",
             "Saturn", "Uranus", "Neptune", "Pluto"};
          printList (planets);
          insertSort (planets);
       }
    } 
  5.  
    class FindMedian
    {
       public static void insertSort (int[] list)
       {
          for (int top = 1 ; top < list.length ; top++)
          {
             int item = list [top];
             int i = top;
             while (i > 0 && item < list [i - 1])
             {
                list [i] = list [i - 1];
                i--;
             }
             list [i] = item;
             printList (list);
          }
       }
    
    
       public static void main (String[] args)
       {
          System.out.println ("How long will the list be?");
          int length = In.getInt ();
          int[] list = new int [length];
          for (int i = 0 ; i < length ; i++)
          {
             System.out.println ("Please enter another integer:");
             list [i] = In.getInt ();
          }
          insertSort (list);
          printList (list);
          double median = 0;
          if (length % 2 == 0)
             median = (list [length / 2] + list [length / 2 - 1]) / 2.0;
          else
             median = list [length / 2];
          System.out.println (median);
       }
    } 
  6. Yes - an item is only moved in front of another if it is smaller