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);
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario