Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    36

    array in ordine decrescente

    Un saluto a tutti.

    Dovrei ordinare un array in modo decrescente con dati tipo int, utilizzando solo i cicli.

    codice:
    $myArray=array(8,-7,3,1,-2);
    $n=NULL;
    $cont=count($MyArray);
    
    for ($i=0; $i<&cont; $i++){
    
    }
    a questo punto non riesco a capire cosa devo fare.

    Grazie x l'aiuto

  2. #2

    Re: array in ordine decrescente

    Originariamente inviato da leonte54

    a questo punto non riesco a capire cosa devo fare.
    In pratica non hai fatto assolutamente nulla!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    36
    Lo so.
    Non chiedo il codice ma capire come andare avanti.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    36
    Non devo utilizzare le funzioni di ordinamento ma solo cicli

  6. #6
    Originariamente inviato da satifal
    Algoritmi di ordinamento
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Originariamente inviato da leonte54
    Non devo utilizzare le funzioni di ordinamento ma solo cicli
    Scusami e perchè? Quando con un semplice arsort() risolvi tutto

    Codice PHP:
    $myArray=array(8,-7,3,1,-2);
    arsort($myArray);

    foreach(
    $myArray as $nm) echo $nm.'
    '


  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    36
    E' un esercizio per imparare.
    Comunque su indicazione di satifal ho provato a fare questo algoritmo, solo che non visualizzo gli ultimi due dati dell'array, poi cercherò di renderlo decrescente

    codice:
    $arr=array(8,-7,3,1,-2);
    $cont=count($arr);
    
    for ($i=0; $i<$cont; $i++){
    	$minimo = $i; //Partiamo dall' i-esimo elemento
    	for($j = $i+1; $j < $cont; $j++) {
    //Qui avviene la selezione.
    //Ogni volta che nell'iterazione troviamo
    //un elemento piú piccolo di minimo facciamo puntare minimo all'elemento trovato
    		if($arr[$minimo]>$arr[$j]) {
            $minimo = $j;
    		}
    		}
    //Se minimo e diverso dall'elemento di partenza allora avviene lo scambio
    	if($minimo!=$i) { 
                    $k = $arr[$minimo];
                    $arr[$minimo]= $arr[$i];
                    $arr[$i] = $k;
    	echo $arr[$i]." / ";
    }
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Reinventare la ruota non serve a niente....

  10. #10
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Originariamente inviato da leonte54
    E' un esercizio per imparare.
    Comunque su indicazione di satifal ho provato a fare questo algoritmo, solo che non visualizzo gli ultimi due dati dell'array, poi cercherò di renderlo decrescente
    non ha senso visualizzare durante lo scambio, ma visualizza il contenuto dell'array a ordinamento ultimato. Per avere l'ordinamento inverso ti basta cambiare l'operatore di confronto fra elemnti da > in <, così anzichè lavorare sulla selezione del minimo elemento lavori su quella del massimo.

    Codice PHP:
    <?php
            $arr 
    = array(8, -731, -2);
            
    $cont count($arr);

            for (
    $i 0$i $cont$i++) {
                
    $minimo $i//Partiamo dall' i-esimo elemento
                
    for ($j $i 1$j $cont$j++) {
    //Qui avviene la selezione.
    //Ogni volta che nell'iterazione troviamo
    //un elemento piú piccolo di minimo facciamo puntare minimo all'elemento trovato
                    
    if ($arr[$minimo] > $arr[$j]) {
                        
    $minimo $j;
                    }
                }
    //Se minimo e diverso dall'elemento di partenza allora avviene lo scambio
                
    if ($minimo != $i) {
                    
    $k $arr[$minimo];
                    
    $arr[$minimo] = $arr[$i];
                    
    $arr[$i] = $k;
                    
    //echo $arr[$i]." / ";
                
    }
            }
            
    print_r($arr);
            
    ?>
    Se invece per la natura del selection sort, intendevi sfruttare il primo for, che di fatto scorre tutto l'array, per provocarne anche la visualizzazione, allora la echo va posta dopo il blocco di codice per lo scambio e prima della chiusura del ciclo (mettilo dopo la parentesi graffa).

    Ricordo ancora quando a scuola mi sorbii l'insert, il selection, bubble, merge e quick sort.
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.