Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Declaración de un array

Estas en el tema de Declaración de un array en el foro de Java en Foros del Web. Buenos días, tengo el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original public class QuickSort {     void ordenaQuickSort ( int lista [ ] ...
  #1 (permalink)  
Antiguo 04/03/2013, 04:29
 
Fecha de Ingreso: noviembre-2012
Ubicación: Adra
Mensajes: 36
Antigüedad: 11 años, 5 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.
  #2 (permalink)  
Antiguo 04/03/2013, 05:04
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Declaración de un array

¿Cómo que automáticamente?

Pero si es tu propio código el que lo hace.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 04/03/2013, 05:08
 
Fecha de Ingreso: noviembre-2012
Ubicación: Adra
Mensajes: 36
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Declaración de un array

Como ya he dicho, no encuentro la manera de expresar mi problema correctamente :P.

En las líneas 5 y 6 paso la referencia de inf a izq y de sup a der, pero que yo sepa inf y sup son variables vacías, ¿cómo es que el programa sabe que inf es el inicio del array y sup el final?
  #4 (permalink)  
Antiguo 04/03/2013, 05:13
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Declaración de un array

¿Cómo van a estar vacías si se las estás pasando?

sortObj.ordenaQuickSort(a, 0, a.length-1);

Además de que un int nunca es vacío, siempre será como mínimo 0.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 04/03/2013, 05:20
 
Fecha de Ingreso: noviembre-2012
Ubicación: Adra
Mensajes: 36
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Declaración de un array

Si bueno, ya se que un int siempre va a tener un valor aleatorio si no se lo declaras tu mismo, pero me refería a que no era un valor relevante para mi en ese momento.

Y ya he entendido el problema que tenía, en la línea "sortObj.ordenaQuickSort(a, 0, a.length-1);" es donde le estoy pasando los 3 parámetros, a (vector), 0 (la posición 0) y a.length-1 (la última posición). Si esto es correcto entonces ya si entiendo todo el ejercicio.

Si pudieras darme el visto bueno y así marcar el tema como solucionado te lo agradecería xerelo.
  #6 (permalink)  
Antiguo 04/03/2013, 05:24
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Declaración de un array

Sí, es eso.

Pero int no tiene un valor aleatorio, tiene 0.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 04/03/2013, 05:26
 
Fecha de Ingreso: noviembre-2012
Ubicación: Adra
Mensajes: 36
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Declaración de un array

Cita:
Iniciado por Xerelo Ver Mensaje
Sí, es eso.

Pero int no tiene un valor aleatorio, tiene 0.
Hmm que raro, recuerdo de cuando estudié C que si a int no le asignabas nada tenia una valor aleatorio, quizás en java no o quizás en C tampoco y este totalmente confundido jaj

Gracias xerelo, siempre resolviendome los problemas :)

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:51.