Back to index

wims  3.65+svn20090927
Sorter.java
Go to the documentation of this file.
00001 package rene.util.sort;
00002 
00003 import java.io.*;
00004 
00005 import java.util.*;
00006 
00011 public class Sorter
00012 {      static public void sort (SortObject v[])
00013        {      QuickSort(v,0,v.length-1);
00014        }
00015        
00016        static public void sort (SortObject v[], int n)
00017        {      QuickSort(v,0,n-1);
00018        }
00019        
00020        static public void sort (Vector v)
00021        {      SortObject o[]=new SortObject[v.size()];
00022               v.copyInto(o);
00023               sort(o);
00024               for (int i=0; i<o.length; i++)
00025                      v.setElementAt(o[i],i);
00026        }
00027        
00028        static public void QuickSort (SortObject a[], int lo0, int hi0)
00029        {      int lo = lo0;
00030               int hi = hi0;
00031               SortObject mid;
00032 
00033               if ( hi0 > lo0)
00034               {      mid = a[ ( lo0 + hi0 ) / 2 ];
00035                      while( lo <= hi )
00036                      {      while( ( lo < hi0 ) && ( a[lo].compare(mid)<0 ) )
00037                                ++lo;
00038                             while( ( hi > lo0 ) && ( a[hi].compare(mid)>0 ) )
00039                                --hi;
00040                             if( lo <= hi ) 
00041                             {      swap(a, lo, hi);
00042                                    ++lo;
00043                                    --hi;
00044                             }
00045                      }
00046                      if( lo0 < hi ) QuickSort( a, lo0, hi );
00047                      if( lo < hi0 ) QuickSort( a, lo, hi0 );
00048               }      
00049        }
00050 
00051        static private void swap (SortObject a[], int i, int j)
00052        {      SortObject T;
00053               T = a[i]; 
00054               a[i] = a[j];
00055               a[j] = T;
00056        }
00057 
00058        static public void QuickSort (Object a[], int lo0, int hi0)
00059        {      int lo = lo0;
00060               int hi = hi0;
00061               SortObject mid;
00062 
00063               if ( hi0 > lo0)
00064               {      mid = (SortObject) a[ ( lo0 + hi0 ) / 2 ];
00065                      while( lo <= hi )
00066                      {      while( ( lo < hi0 ) && ( ((SortObject)a[lo]).compare(mid)<0 ) )
00067                                ++lo;
00068                             while( ( hi > lo0 ) && ( ((SortObject)a[hi]).compare(mid)>0 ) )
00069                                --hi;
00070                             if( lo <= hi ) 
00071                             {      swap(a, lo, hi);
00072                                    ++lo;
00073                                    --hi;
00074                             }
00075                      }
00076                      if( lo0 < hi ) QuickSort( a, lo0, hi );
00077                      if( lo < hi0 ) QuickSort( a, lo, hi0 );
00078               }
00079        }
00080 
00081        static private void swap (Object a[], int i, int j)
00082        {      Object T;
00083               T = a[i]; 
00084               a[i] = a[j];
00085               a[j] = T;
00086        }
00087 
00088        public static void main (String args[])
00089               throws IOException
00090        // Sort the incoming lines and remove doublicates
00091        {      BufferedReader in=new BufferedReader(
00092                      new InputStreamReader(System.in));
00093               Vector v=new Vector();
00094               while (true)
00095               {      String line=in.readLine();
00096                      if (line==null) break;
00097                      v.addElement(new SortString(line));
00098               }
00099               in.close();
00100               sort(v);
00101               Enumeration e=v.elements();
00102               String last=null;
00103               while (e.hasMoreElements())
00104               {      String s=((SortString)e.nextElement()).toString();
00105                      if (last==null || !s.equals(last))
00106                      {      System.out.println(s);
00107                             last=s;
00108                      }
00109               }
00110        }
00111 }
00112