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

    Algoritmo per ordinare un arrey di stringhe

    salve, come da titolo sto cercando di costruire un algoritmo che mi permetta di ordinare un array di stringhe in modo alfabetico.
    Io avevo in mente di usare il 'selction sort', ma non ho proprio idea di cosa mettere nell'if.
    Vorrei anche utilizzare solo 'java.util.Scanner'.
    voi avete qualche idea?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da rogerrafae Visualizza il messaggio
    salve, come da titolo sto cercando di costruire un algoritmo che mi permetta di ordinare un array di stringhe in modo alfabetico.
    Io avevo in mente di usare il 'selction sort', ma non ho proprio idea di cosa mettere nell'if.
    Vorrei anche utilizzare solo 'java.util.Scanner'.
    voi avete qualche idea?
    Premessa: tutti gli algoritmi di ordinamento che sono dei Comparison sort, vanno a fare tanti confronti tra coppie di elementi. Quali coppie, con quale sequenza e logica, dipende appunto dall'algoritmo.
    Il Selection Sort, come altri, arriva ad un punto in cui confronta due elementi. Visto che parli di String, parli di oggetti e su di essi non si possono usare < > <= >=, si devono usare dei metodi. E in Java la astrazione principale per la comparazione degli oggetti è la interfaccia Comparable (oltre a Comparator). String è Comparable, quindi ha il compareTo(String).

    Pertanto se str1.compareTo(str2) dà minore di 0, allora significa: str1 minore di str2
    Cosa si fa in base a questo risultato, dipende dall'algoritmo ma tipicamente si scambiano i due elementi.


    P.S. Se vuoi implementare un algoritmo di ordinamento è tipicamente per motivi puramente "didattici". Altrimenti si usano i sort già implementati nel framework standard.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    grazie per la risposta
    quindi impostato così potrebbe funzionare? perché quando lo uso mi da qualche problema..
    codice:
    Scanner ts = new Scanner(System.in);
        System.out.println("inserisci quantità");
        int f = ts.nextInt();
        String [] v = new String[f];
        for(int i = 0; i<f;i++){
            System.out.println("inserisci stringa");
            v[i] = ts.next();       
        }
        for(int i = 0; i<f-1;i++){
            int posm = i;
            for(int j = 0; j<f;j++){
                if(v[j].compareTo(v[posm]) < 0 ){
                    posm = j;
                }
            }
            String temp = v[i];
            v[i] = v[posm];
            v[posm] = temp;
        }
        for(int i = 0;i<f;i++){
            System.out.println(v[i]);
        }
    Ultima modifica di MItaly; 01-06-2016 a 14:43 Motivo: Tag code

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da rogerrafae Visualizza il messaggio
    perché quando lo uso mi da qualche problema..
    Non conosco bene il Selection Sort (mai usato, personalmente) ma non mi pare che quello che hai fatto corrisponda esattamente alla logica espressa dalla implementazione: https://en.wikipedia.org/wiki/Select...Implementation



    P.S.: con gli algoritmi di ordinamento c'è ben poco da "inventarsi" (a parte nomi di variabili o poco più) ... basta seguire le informazioni facilmente reperibili.
    Ultima modifica di andbin; 31-05-2016 a 23:47
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non conosco bene il Selection Sort (mai usato, personalmente) ma non mi pare che quello che hai fatto corrisponda esattamente alla logica espressa dalla implementazione: https://en.wikipedia.org/wiki/Select...Implementation



    P.S.: con gli algoritmi di ordinamento c'è ben poco da "inventarsi" (a parte nomi di variabili o poco più) ... basta seguire le informazioni facilmente reperibili.

    grazie ora funziona

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.