ayuda sobre algoritmo de ordenacion quicksort

javi
20 de Enero del 2006
hola a todos, estoy realizando un trabajo y necesito un algoritmo para hacer una ordenacion mediante quicksort pero tomando como pivote el primer elemento del array. El metodo quicksort que tengo tomando como pivote la mediana de tres elementos es el siguiente:
public static void quickSort(Object a[], int izq, int der )
{
if( izq<der )
{
Comparable pivot=mediana3(a,izq,der);
int i=izq;

int j=der-1;
for( ; i<j; )
{ while(pivot.compareTo(a[++i])>0);
while(pivot.compareTo(a[--j])<0);
intercambiar (a,i,j);
}
intercambiar (a,i,j); // Deshacer el ultimo cambio
intercambiar (a,i,der-1); // Restaurar el pivote
quickSort(a,izq,i-1); // Ordenar recursivamente los elementos menores
quickSort(a,i+1,der); // Ordenar recursivamente los elementos mayores
}
}
pero no se como modificarlo para que el pivote sea a[izq] ya que si simplemente cambio la linea Comparable pivot = (Comparable) a[izq] me salgo del array y me da una excepcion.
Aver si alguien puede darme la solucion.
Gracias.

neossoftware
20 de Enero del 2006
Porque no pruebas mi Codigo Compa:

package org.neos.ord;

public class Cliente implements Comparable{

private String nombre;

public Cliente(String nombre){
this.nombre=nombre;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public int compareTo(Object obj) {
Cliente clie = (Cliente)obj;

if (this.getNombre().compareToIgnoreCase(clie.getNombre())>0)
return 1;
if (this.getNombre().compareToIgnoreCase(clie.getNombre())<0)
return -1;
return 0;
}

public String toString() {
return this.nombre;
}

}

-----------------------------------------
package org.neos.ord;

public class Order {

public static void quickSort(Comparable arr[],int ini, int fin)
{
int izq,der;
Comparable x,aux;
x=arr[ini];
izq=ini;der=fin;
while(izq<der)
{
while(((arr[izq].compareTo(x)<0)||(arr[izq].compareTo(x)==0))&&izq<der) izq++;
while(arr[der].compareTo(x)>0)
der--;
if (izq<der)
{
aux= arr[izq];
arr[izq]=arr[der];
arr[der]=aux;
}
}
arr[ini]=arr[der];
arr[der]=x;
if(ini<der-1)quickSort(arr,ini,der-1);
if(der+1 <fin)quickSort(arr,der+1,fin);
}
}

--------------------------
package org.neos.ord;

public class Test {
public static void main(String args[]) {

Cliente clie1=new Cliente("mario");
Cliente clie2=new Cliente("kris");
Cliente clie3=new Cliente("ari");
Cliente clie4=new Cliente("pepe");
Cliente clie5=new Cliente("dalia");

Cliente lista[]=new Cliente[5];

lista[0]=clie1;
lista[1]=clie2;
lista[2]=clie3;
lista[3]=clie4;
lista[4]=clie5;

Order.quickSort(lista,0,4);

for (int i=0;i<5;i++) {
System.out.println(lista[i]);
}
}
}

Viva Linux Debian y Java