Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/03/2013, 04:29
rufi88
 
Fecha de Ingreso: noviembre-2012
Ubicación: Adra
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 0
Declaración de un array

Buenos días, tengo el siguiente código:

Código Java:
Ver original
  1. public class QuickSort {
  2.     void ordenaQuickSort(int lista[], int inf, int sup){
  3.         int izq, der;
  4.         int eMedio, temp;
  5.         izq=inf;
  6.         der=sup;
  7.         //selecciona el elemento situado en el centro del array
  8.         eMedio=lista[(izq+der)/2];
  9.         //situa los menores del elemento del medio a la izquierda y los mayores a la derecha
  10.         do{
  11.             //avanza por la izquierda hasta encontrar un elemento mayor que el patrón o llegue al superior
  12.             while(lista[izq]<eMedio && izq<sup)
  13.                 izq++;
  14.             //avanza por la derecha hasta encontrar un elemento menor al patrón o llegue al inferior
  15.             while(lista[der]>eMedio && der>inf)
  16.                 der--;
  17.             //permuta el elemento de la izquierda por el de la derecha
  18.             if(izq<=der){
  19.                 temp=lista[izq];
  20.                 lista[izq]=lista[der];
  21.                 lista[der]=temp;
  22.                 izq++;
  23.                 der--;
  24.             }
  25.         }while(izq<=der);
  26.        
  27.         /* si hay elementos en el conjunto inferior se llama a ordenaQuickSort
  28.             con los límites inf y donde queda el elemento patrón*/
  29.        
  30.         if(der>inf) ordenaQuickSort(lista, inf, der);
  31.        
  32.         /* si hay elementos en el conjunto superior se llama a ordenaQuickSort
  33.             con los límites desde la izquierda hasta el sup*/
  34.        
  35.         if(izq<sup) ordenaQuickSort(lista, izq, sup);
  36.     }
  37.    
  38.     public static void main(String args []){
  39.         int a[]={13, 6, 4, 14, 3, 12, 11, 7, 15, 9, 16, 27, 47, 93, 3, 4, 5, 2};
  40.         QuickSort sortObj=new QuickSort();
  41.         System.out.println("Conjunto sin ordenar:");
  42.         for(int i:a)
  43.             System.out.print(i+", ");
  44.         sortObj.ordenaQuickSort(a, 0, a.length-1);
  45.         System.out.println("\nConjunto ordenado:");
  46.             for(int i:a)
  47.                 System.out.print(i+", ");
  48.     }
  49. }

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.