Boa noite pessoal, tenho um trabalho que eu preciso fazer 2 tipos de ordenação
a primeira eu fiz pelo collection.sort(se puderem me falar qual o tipo dessa ordenação agradeceria)
o segundo estava pensando em fazer pelo BubbleSort(mas pode ser outro, so tem que ser difenrente da ordenaçao do Collection) na ordem Decrescente em um arquivo txt
Agradeço desde já a ajuda!
No caso vc quis dizer que ordenou usando o método Collections.sort(), correto?
Se for isso, considerando o Java 17, este método internamente invoca o método List.sort() como é descrito na documentação e como podemos ver no código fonte.
E olhando a descrição do método List.sort() vemos que se trata de um mergesort.
No caso do arquivo que vc tem que ordenar, seria por palavras? Se for, daria para fazer assim:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
public class Main {
public static void main(String... args) {
try {
Path path = Paths.get("words.txt");
String[] words = new String(Files.readAllBytes(path)).split("[,\\s]+");
// Ou no Java 11 ou superior
// String[] words = Files.readString(path).split("[,\\s]+");
System.out.println(Arrays.toString(words));
bubbleSort(words);
Files.write(path, String.join(", ", words).getBytes());
// Ou no Java 11 ou superior
// Files.writeString(path, String.join(", ", words));
} catch (IOException e) {
e.printStackTrace();
}
}
private static void bubbleSort(String[] words) {
// Insira sua implementação de Bubble Sort aqui
}
}
Primeiramente muito obrigado por falar a primeira questão,
já na parte da ordenação, eu tenho o dados(numericos)+ a data, eu queria ordenar pelos dados, e cada dado estaria em uma linha no arquivo txt
é que eu não consigo colar o codigo pq tem +300 linhas, mas ele deve adicionar dados, abrir o arquivo txt, remover dado e ordenar decrescente e crescente o arquivo. Já consegui fazer tudo(acredito que até na prte crescente voce me ajudou), menos ordenar decrescente, vou colar aqui como eu esta a parte de ordenação crescente
/code
btnNewButton = new JButton(“Crescente”);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String str;
ArrayList nomes = new ArrayList();
BufferedReader in = new BufferedReader(new FileReader("C:\\Users\\sique\\OneDrive\\Documentos\\facul 4o\\aps\\entrada.txt"));
while ((str = in.readLine()) != null) {
nomes.add(str);
}
in.close();
Collections.sort(nomes);
BufferedWriter out = new BufferedWriter(new FileWriter("C:\\Users\\sique\\OneDrive\\Documentos\\facul 4o\\aps\\entrada.txt"));
for (int i = 0; i < nomes.size(); i++) {
out.write(nomes.get(i));
out.newLine();
}
out.close();
}catch(IOException ex) {
JOptionPane.showMessageDialog(null, "erro em salvar" + ex.getMessage());
}
}
});
o problema é que eu não posso repetir o mesmo metodo de ordenação, eu tenho usar só 2 tipos de ordenação, como já usei o Collection.sort(), eu não poderia repeti-lo e nem outro que teria o mesmo metodo de ordenação, por isso perguntei qual que era o tipo de ordenação do collection.sort()
Segue abaixo os metodos que eles pedem:
Ordenação por troca; Ordenação por inserção;Ordenação por seleção;Método da intercalação ou outro.