Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Ordinamento non decrescente

    Sto provando a fare un programma che stampi due array di int in ordine non decrescente. Il codice che ho fatto è:
    import prog.io.*;

    class ordine{
    public static void main(String[] args) {
    ConsoleInputManager in = new ConsoleInputManager();
    ConsoleOutputManager out = new ConsoleOutputManager();
    int[] uno = new int[5];
    int[] due = new int[5];
    int[] z = new int[10];
    uno[0] = in.readInt("Inserisci un intero: ");
    for (int i=1; i < 5; i++)
    uno[i] = in.readInt("Inserisci un intero maggiore "
    + "o uguale al precedente: ");
    due[0] = in.readInt("Inserisci un intero: ");
    for (int i=1; i < 5; i++)
    due[i] = in.readInt("Inserisci un intero maggiore "
    + "o uguale al precedente: ");
    for(int i=0;i<5;i++){
    if(uno[i]>due[i]){
    out.print(due[i] + " " + uno[i]);
    }
    else{
    out.print(uno[i] + " " + due[i]);
    }
    }

    }
    }

    Ora la fine del codice è sicuramente sbagliata, questo lo so, il problema è che per quanto stupido non riesco a trovar la soluzione... qualcuno può illuminarmi? grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ordinamento non decrescente

    Originariamente inviato da Snakethesniper
    Sto provando a fare un programma che stampi due array di int in ordine non decrescente.
    Quindi hai 2 array distinti, ognuno con valori non decrescenti e vuoi, senza fare merge/ordinamenti particolari, stampare l'insieme dei valori mantenendo la "non decrescenza".

    Originariamente inviato da Snakethesniper
    Ora la fine del codice è sicuramente sbagliata, questo lo so, il problema è che per quanto stupido non riesco a trovar la soluzione... qualcuno può illuminarmi?
    Qui basta solo ragionare sulla logica di "spostamento" degli indici nei due array. Non ti dò la soluzione diretta .... spetta a te. Ma ti spiego la logica con un esempio:

    a = { 1, 2, 5, 7, 8 }
    b = { 3, 4, 5, 6, 7 }

    Siano ia e ib gli indici nei due array, che partono entrambi da 0.

    Step 1) 1 è minore di 3? Sì, quindi devi stampare a[0] e incrementare ia.
    Step 2) 2 è minore di 3? Sì, allora devi continuare su a e stampare a[1] e incrementare ia.
    Step 3) 5 è minore di 3? No, quindi ora devi passare su b e stampare b[0] poi incrementare ib.
    Step 4) 5 è minore di 4? No, quindi devi continuare su b e stampare b[1] poi incrementare ib.
    ....

    Ora ti sembra più chiaro? Devi "percorrere" uno o l'altro array in base al confronto tra due valori in modo da mantenere la progressione dei valori.

    Caso particolare .... quando trovi 2 valori uguali. Cosa devi fare? Semplice, stampare entrambi!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.