Código Java:
Ver original
public class QuickSort { void ordenaQuickSort(int lista[], int inf, int sup){ int izq, der; int eMedio, temp; izq=inf; der=sup; //selecciona el elemento situado en el centro del array eMedio=lista[(izq+der)/2]; //situa los menores del elemento del medio a la izquierda y los mayores a la derecha do{ //avanza por la izquierda hasta encontrar un elemento mayor que el patrón o llegue al superior while(lista[izq]<eMedio && izq<sup) izq++; //avanza por la derecha hasta encontrar un elemento menor al patrón o llegue al inferior while(lista[der]>eMedio && der>inf) der--; //permuta el elemento de la izquierda por el de la derecha if(izq<=der){ temp=lista[izq]; lista[izq]=lista[der]; lista[der]=temp; izq++; der--; } }while(izq<=der); /* si hay elementos en el conjunto inferior se llama a ordenaQuickSort con los límites inf y donde queda el elemento patrón*/ if(der>inf) ordenaQuickSort(lista, inf, der); /* si hay elementos en el conjunto superior se llama a ordenaQuickSort con los límites desde la izquierda hasta el sup*/ if(izq<sup) ordenaQuickSort(lista, izq, sup); } int a[]={13, 6, 4, 14, 3, 12, 11, 7, 15, 9, 16, 27, 47, 93, 3, 4, 5, 2}; QuickSort sortObj=new QuickSort(); for(int i:a) sortObj.ordenaQuickSort(a, 0, a.length-1); for(int i:a) } }
Y mi problema viene en que no entiendo como el vector sabe que int inf e int sup son el principio y el final del array. ¿A caso en la línea "void ordenaQuickSort(int lista[], int inf, int sup)" el array toma el primer int como el inicio del array y el segundo int como el final de manera automática?
No se si he planteado muy bien la duda, pero es un poco compleja de explicar, espero que podaís resolvermela.
Gracias por vuestro tiempo.
PD: He tenido que crear el post usando IE, en el chrome no me funcionaban los botones de formato de texto y tipo de código, ¿le ha pasado a alguien mas?, siempre habia posteado desde chrome.