Foros del Web » Programando para Internet » PHP »

Función ordena_vector

Estas en el tema de Función ordena_vector en el foro de PHP en Foros del Web. Hola, he creado una función ordena_vector($v) que ordena los elementos de un vector de forma ascendente. El código de la función es el siguiente: Código: ...
  #1 (permalink)  
Antiguo 17/10/2010, 09:12
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 9 meses
Puntos: 0
Función ordena_vector

Hola,

he creado una función ordena_vector($v) que ordena los elementos de un vector de forma ascendente.

El código de la función es el siguiente:
Código:
function ordena_vector(&$v){
  for($i=0; $i<count($v)-1; $i++){
    $min=$v[$i];
    for($j=$i+1; $j<count($v); $j++)
      if($v[$j]<min){
        $v[$i]=$v[$j];
        $v[$j]=$min;
        $min=$v[$i];
      }
  }
}
El problema es que cuando llamo a la función ordena_vector($v) desde el programa principal, ésta no ordena nada :( ¿Qué puede ocurrir? ¿Estoy pasando mal el array por referencia?

Gracias por vuestros comentarios porque le he dado mil vueltas y no doy con el problema!!

Trabajo con Apache 2.2 y PHP 5.3.2 sobre Fedora 12

Un saludo,
Jose
__________________
Nadie dijo que ésto iba a ser fácil
  #2 (permalink)  
Antiguo 17/10/2010, 09:15
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Función ordena_vector

has intentado usar las herramientas que te da php ?

www.php.net/sort

saludos..
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 17/10/2010, 16:07
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 9 meses
Puntos: 0
Respuesta: Función ordena_vector

No estoy programando una aplicación comercial. Éste es un ejercicio de clase! por eso quiero saber en qué estoy fallando, qué estoy haciendo mal.

Realmente, ordenar el array es lo de menos ya que, como bien dices, el propio lenguaje proporciona funciones para hacer ésto de forma sencilla.

Gracias,
Jose
__________________
Nadie dijo que ésto iba a ser fácil
  #4 (permalink)  
Antiguo 17/10/2010, 21:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Función ordena_vector

Prueba este metodo:
Este método consiste en buscar el elemento más pequeño del array y ponerlo en primera posición; luego, entre los restantes, se busca el elemento más pequeño y se coloca en segudo lugar, y así sucesivamente hasta colocar el último elemento. Por ejemplo, si tenemos el array {40,21,4,9,10,35}, los pasos a seguir son:

{4,21,40,9,10,35} <-- Se coloca el 4, el más pequeño, en primera posición : se cambia el 4 por el 40.
{4,9,40,21,10,35} <-- Se coloca el 9, en segunda posición: se cambia el 9 por el 21.
{4,9,10,21,40,35} <-- Se coloca el 10, en tercera posición: se cambia el 10 por el 40.
{4,9,10,21,40,35} <-- Se coloca el 21, en tercera posición: ya está colocado.
{4,9,10,21,35,40} <-- Se coloca el 35, en tercera posición: se cambia el 35 por el 40.

Si el array tiene N elementos, el número de comprobaciones que hay que hacer es de N*(N-1)/2, luego el tiempo de ejecución está en O(n2)

int array[N];
int i,j,menor,aux;

// Dar valores a los elementos del array

for(i=0;i<N-1;i++)
{
for(j=i+1,menor=i;j<N;j++)
if(array[j]<array[menor]) // Si el elemento j es menor que el menor:
menor=j; // el menor pasa a ser el elemento j.
aux=array[i]; // Se intercambian los elementos
array[i]=array[menor]; // de las posiciones i y menor
array[menor]=aux; // usando una variable auxiliar.
}

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 21:23.