class ArrayIns
   {
   private long[] a;                 // ref to array a
   private int nElems;               // number of data items
//--------------------------------------------------------------
   public ArrayIns(int max)          // constructor
      {
      a = new long[max];                 // create the array
      nElems = 0;                        // no items yet
      }
//--------------------------------------------------------------
   public void insert(long value)    // put element into array
      {
      a[nElems] = value;             // insert it
      nElems++;                      // increment size
      }
//--------------------------------------------------------------
   public void display()             // displays array contents
      {
      for(int j=0; j<nElems; j++)       // for each element,
         System.out.print(a[j] + " ");  // display it
      System.out.println("");
      }
//--------------------------------------------------------------
   public void insertionSort()
      {
      int in, out;      for(out=1; out<nElems; out++)     // out is dividing line
         {
         long temp = a[out];            // remove ed item
         in = out;                      // start shifts at out
         while(in>0 && a[in-1] >= temp) // until one is smaller,
            {
            a[in] = a[in-1];            // shift item to right
            --in;                       // go left one position
            }
         a[in] = temp;                  // insert ed item
         }  // end for
      }  // end insertionSort()
//--------------------------------------------------------------
   public long median() {
     insertionSort();
     if(nElems%2==0)
       return -1;
     else
       return a[nElems/2];
   }
//--------------------------------------------------------------
   }  // end class ArrayIns
////////////////////////////////////////////////////////////////
class InsertSortApp
   {
   public static void main(String[] args)
      {
      int maxSize = 100;            // array size
      ArrayIns arr;                 // reference to array
      arr = new ArrayIns(maxSize);  // create the array      arr.insert(77);               // insert 10 items
      arr.insert(99);
      arr.insert(44);
      arr.insert(55);
      arr.insert(22);
      arr.insert(88);
      arr.insert(11);
      arr.insert(00);
      arr.insert(66);
      arr.insert(33);      arr.display();                // display items      arr.insertionSort();          // insertion-sort them      arr.display();                // display them again
      System.out.println(arr.median());
      }  // end main()
   }  // end class InsertSortApp给ArrayIns类加一个median()方法,这个方法将返回数组的中间值。(回忆一下,数组中一半数据项比中间值大,一半数据项比中间值小。)
如果直接返回
public long median() 
    { 
        return a[nElems / 2]; 
    } 
那一共有偶数个项的时候,怎么半呢,比如nElems=10的时候,返回a[5],可a[5]不是这个数组的中间项啊
我是这么写的
public long median() {
     insertionSort();
     if(nElems%2==0)
       return -1;
     else
       return a[nElems/2];
   }
nElems是偶数,返回-1,代表没中间值,不知道可以不?