martes, 15 de junio de 2010

Sorting - Quick Sort


public static void quickSort(int array[], int left, int right)
{
   int p= partition(array,left, right);
   if (p -1 > left)
      quickSort(array, left, p-1);
   if (p +1 < right)
      quickSort(array, p+1, right);
}

private static int partition(int array[], int left, int right)
{
   if (left >= right)
      return -1;

   int i = left;
   int pivot = array[left];
   int j = right;

   while ( i < j)
   {
      i++;
      while (i < j && array[i]< pivot )
      { i++;}

      while ( j> 0 && array[j]> pivot )
      { j --;}

      swap(array, i,j);
   }
   swap(array, i,j);
   swap(array, left,j);
   return j;
}

private static void swap(int array[], int i,int j)
{
   if (i != j)
   {
      int temp = array[j];
      array[j]= array[i];
      array[i]= temp;
   }
}

//Testing

public static void showArray(int array[])
{
   System.out.print("Array: [");
   for (int i = 0; i < array.length; i++)
      System.out.print(array[i] + " ");
   System.out.println("]");
}

public static void main(String args[])
{
   int array[] = {5,3,1,9,8,2,4,7};
   showArray(array);
   quickSort(array, 0, array.length-1);
   showArray(array);
}

No hay comentarios:

Publicar un comentario