Ordenação decrescente através do metodo Bubblesort em um arquivo .txt
9 respostasResolvido
txt
A
Artthurns
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:
importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.Arrays;publicclassMain{publicstaticvoidmain(String...args){try{Pathpath=Paths.get("words.txt");String[]words=newString(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(IOExceptione){e.printStackTrace();}}privatestaticvoidbubbleSort(String[]words){// Insira sua implementação de Bubble Sort aqui}}
A
Artthurns
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
W
wldomiciano
É que vc está sendo muito superficial.
Nos dê exemplos de código, exemplos de como é de verdade este TXT, mostra o código que vc já tem.
A
Artthurns
é 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
BufferedReaderin=newBufferedReader(newFileReader("C:\\Users\\sique\\OneDrive\\Documentos\\facul 4o\\aps\\entrada.txt"));while((str=in.readLine())!=null){nomes.add(str);}in.close();Collections.sort(nomes);BufferedWriterout=newBufferedWriter(newFileWriter("C:\\Users\\sique\\OneDrive\\Documentos\\facul 4o\\aps\\entrada.txt"));for(inti=0;i<nomes.size();i++){out.write(nomes.get(i));out.newLine();}out.close();}catch(IOExceptionex){JOptionPane.showMessageDialog(null,"erro em salvar"+ex.getMessage());}}});
/code
W
wldomiciano
Experimentar usar o Comparator.reverseOrder(). Assim:
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.
W
Solucao aceita
wldomiciano1 like
Eu pesquisei aqui e achei esta implementação do bubble sort:
Eu modifiquei para funcionar com String, olha só:
importjava.util.Arrays;publicclassMain{privatestaticvoidbubbleSort(String[]arr){intlength=arr.length;for(inti=0;i<length-1;i++){for(intj=0;j<length-i-1;j++){// if (arr[j].compareTo(arr[j + 1]) > 0) // assim seria crescenteif(arr[j].compareTo(arr[j+1])<0){// DecrescenteStringtemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}publicstaticvoidmain(String...args){String[]nomes={"b","d","a","c"};bubbleSort(nomes);System.out.println(Arrays.toString(nomes));}}
Se vai ser crescente ou decrescente é aquele if que diz. Vc compara com < 0 ou > 0 dependendo o que vc quer.
A
Artthurns
eu tenho esse codigo para ler o arquivo txt, como que eu poderia coloca-lo dentro dessa formula do bubblesort