Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ordinamento array

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17

    ordinamento array

    Buona sera a tutti
    un esercizio mi chiede di ordinare un array in ordine decrescente senza utilizzare funzioni preimpostate tipo sort() o resort()
    quindi ho creato una funzione personalizzata ma non funziona....


    function ordinamento_decrescente($my_array){
    for($i=0;$i<count($my_array);$i++){
    $val = $my_array[$i];
    $j = $i-1;
    while($j<=0 && $my_array[$j] < $val){
    $my_array[$j+1] = $my_array[$j];
    $j--;
    }
    $my_array[$j+1] = $val;
    }
    return $my_array;
    }


    echo "Array iniziale :\n";
    echo implode(', ',$arr )."</br>";
    echo "\n Array decrescente :\n";
    print_r(ordinamento_decrescente($arr));

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    Grazie mille per il link è molto interessante ma non risolve il mio problema. Inizialmente avevo fatto questa funzione ordinando i valori dell'array in ordine crescente perché mi veniva più facile e infatti funzionava. Quando poi ho dovuto trasformala in decrescente sono iniziati i problemi...credo di essere andata in confusione

  4. #4
    nella funzione che hai postato fai lo swap di un elemento con il successivo se l'elemento è minore del precedente. a logica basterebbe fare lo swap se maggiore

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    191
    Aritmetica php (default complemento a due). https://en.wikipedia.org/wiki/Signed...epresentations
    La prima iterazione di $j = 0 - 1; è -1 che poi la sintassi corretta è tra parentesi $j = (0) - (1); ma tra parentesi più propriamente si utilizza per il secondo valore per distinguere un valore negativo. In realtà credo è un valore variabile $j = ($i) - (1); dove $i è 1 inizialmente.
    Ordinamento macchina: fino a poco tempo fa anche una variabile php creata da indice 0 a n° poteva iniziare a n° (compreso 0) invece di un ordinamento come scritto nel programma
    Codice PHP:
    $arr = array(012); var_dump(key($arr)); // il primo elemento può essere diverso da zero 
    Diciamo che $i dovrebbe iniziare da 1 e qualcosa cambia anche nel resto del codice. Basta poco per cambiare questo esempio C in php https://it.m.wikiversity.org/wiki/Or...mmazione_in_C)

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    Grazie mille a tutti mi siete stati molto utili ora funziona

  7. #7
    Quote Originariamente inviata da Maggi Visualizza il messaggio
    Grazie mille a tutti mi siete stati molto utili ora funziona
    puoi postare la soluzione, così da aiutare altri forumisti che dovessero avere lo stesso problema? Grasssssie

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2022
    Messaggi
    17
    Codice PHP:
    $arr=array(67,32,1,87,88,-3,123,565,-32,45,99,16,78,43,-638,33,61,90,0,12);
    function 
    ordinamento_decrescente($my_array){    for($i=0;$i<count($my_array);$i++){        $val $my_array[$i];        $j $i-1;        while($j>=&& $my_array[$j] < $val){            $my_array[$j+1] = $my_array[$j];            $j--;        }        $my_array[$j+1] = $val;    }return $my_array;}
    echo 
    "Array iniziale :\n";echo implode(', ',$arr )."</br>";echo "\n Array decrescente :\n";print_r(ordinamento_decrescente($arr)); 

  9. #9
    codice:
    $arr = array(67, 32, 1, 87, 88, -3, 123, 565, -32, 45, 99, 16, 78, 43, -638, 33, 61, 90, 0, 12);
    
    
    function ordinamento_decrescente($my_array) {
        for ($i = 0; $i < count($my_array); $i++) {
            $val = $my_array[$i];
            $j = $i - 1;
            while ($j >= 0 && $my_array[$j] < $val) {
                $my_array[$j + 1] = $my_array[$j];
                $j--;
            }
            $my_array[$j + 1] = $val;
        }
        return $my_array;
    }
    echo "Array iniziale :\n";
    echo implode(', ', $arr)."</br>";
    echo "\n Array decrescente :\n";
    print_r(ordinamento_decrescente($arr));
    Ultima modifica di optime; 03-01-2023 a 13:25

Tag per questa discussione

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.