Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Chiarelotto

Trabalho facul

Recommended Posts

galera, obrigado pela ajuda de todos ate o momento.

so falta uma ultima coisa, mais essa e uma duvida que creio que seja simples.

 

coloquei um contador dentro da função.

Como faço para imprimir esse contador fora da função, como puxo ela da função.

 

att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$marcador_inicial = microtime(1);
function BubbleSort( &$items ) {
   $temp = "";
   $size = count( $items );
   for( $i = 1; $i < $size; $i++ ) {
        for( $j = 0; $j < $size - $i; $j++ ) {
             if( $items[$j+1] < $items[$j] ) {
                  $temp = $items[$j];
                  $items[$j] = $items[$j+1];
                  $items[$j+1] = $temp;
			   $conta = $conta + 1;

             }
	 $contaf = $contaf + 1;

        }
   }
echo"<br>";
echo"A quantidade de trocas foi $conta";
echo"<br>";
echo"A quantidade de Comparações foi $contaf";
echo"<br>";
}

$arr = Array();
for($itens = 1; $itens < 500; $itens++ ){
   $arr[] = $itens;//criando o array
}

shuffle( $arr ); //Ordenando Aleatoreamente o array
echo '<pre>';
print_r($arr);
echo"<br>";


BubbleSort( $arr );//Ordenando o Array
echo"<br>";
echo '<pre>';
print_r($arr);
echo"<br>";

rsort( $arr ); //Ordenando em ordem decrescente o Array
echo '<pre>';
print_r($arr);
echo"<br>";

$marcador_final= microtime(1);
$tempo_execucao = $marcador_final - $marcador_inicial;
echo "Tempo para execução: <b>" .sprintf ( "%02.3f", $tempo_execucao ). "</b> segundos. <br>";

?>

 

esses echo aqui, queria mostra-los fora da função para organizar melhor a visualização.

 

echo"<br>";
echo"A quantidade de trocas foi $conta";
echo"<br>";
echo"A quantidade de Comparações foi $contaf";
echo"<br>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

como eu crio um array de 1 ate 499 sem precisar ser:

1,2,3,4,5,6....,499???

faça um loop.

 

use um for() com uma variavel contadora começando no 1, e indo até < que 500

Ou então use a função range

 

$array = range (1,499);

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Armazene o resultado dentro de uma variável e depois faça um return

 

Exemplo


$result  = "<br>";
$result .= "A quantidade de trocas foi $conta";
$result .= "<br>";
$result .= "A quantidade de Comparações foi $contaf";
$result .= "<br>";

return $result;

 

Depois chame a função assim

echo BubbleSort( $arr );

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera perdão reativar este topico.

mais e a ultima vez, ja que essa e a ultima função que preciso finalizar.

 

a seguinte função:

 

<?php
/*********************************************************************
*Obs.: a implementação usa parâmetros por referência, isto é, o vetor *passado será modificado.
*********************************************************************/

       $arr = Array();
	for($itens = 0; $itens < 50; $itens ++) {
	$arr[] = $itens;
	}
    quicksort($arr, 0, 49);

    for ($i = 0; $i < 50; $i++) {
        echo $arr[$i] . "<br/>";
    } 

function troca(&$v1, &$v2){
   $vaux = $v1;
   $v1 = $v2;
   $v2 = $vaux;
} 

//divide o array em dois
function divide(&$arr, $ini, $fim){
   $i = $ini;
   $j = $fim;
   $dir = 1; 
   while ($i > $j){
       if ($arr[$i] < $arr[$j]){
           troca($arr[$i], $arr[$j]);
           $dir = - $dir;
       }
       if ($dir = 1) {
           $j--; 
       }else{
           $i++;
       }   
   }
   return $i;
}
//ordena
function quicksort(&$arr, $ini, $fim){
   if ($ini < $fim){
       $k = divide($arr, $ini, $fim);
       quicksort($arr, $ini, $k-1);
       quicksort($arr, $k+1, $fim);
   }
}
quicksort($arr,0,count($arr));


?>

 

preciso dentro de function troca(&$v1, &$v2){ preciso somar quantas trocas foram feitas, como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.