Untitled
unknown
plain_text
5 months ago
2.3 kB
2
Indexable
import java.util.LinkedList; public class ClassificationSort implements Sorter { public String nome = "Classification Sort"; public int tamanho_por_bloco = 1024; public String getNome() { return this.nome; } public void setTamanhoBloco(int tamanho_por_bloco) { this.tamanho_por_bloco = tamanho_por_bloco; } public String[] sort(String[] array) { LinkedList<LinkedList<String[]>> listaTamanhos = new LinkedList<LinkedList<String[]>>(); int maior = 0; int tamanhoFinal = 0; for (String str:array) { int tamanhoString = str.length(); if (tamanhoString > 0) { tamanhoFinal++; } if (tamanhoString > maior) { maior = str.length(); } } maior = maior + 1; //loop para inicializar as listas de cada Tamanho de palavra int tamanho_por_bloco = this.tamanho_por_bloco; for (int i = 0; i <= maior; i++) { listaTamanhos.add(new LinkedList<>()); listaTamanhos.get(i).add(new String[tamanho_por_bloco]); } //esse trecho inicializa os marcadores que serão usados para //saber aonde será colocado o proximo elemento da lista // Marcador -> [Array, Posição] int[][] marcadores = new int[maior][2]; //esse treco percorre todos os elementos e o colocara na lista adequada //de acordo com seu tamanho for (String str:array) { int tamanhoString = str.length(); if (tamanhoString == 0) { continue; } if (marcadores[tamanhoString][1] >= tamanho_por_bloco) { marcadores[tamanhoString][0] = marcadores[tamanhoString][0] + 1; marcadores[tamanhoString][1] = 0; listaTamanhos.get(tamanhoString).add(new String[tamanho_por_bloco]); } listaTamanhos.get(tamanhoString).get(marcadores[tamanhoString][0])[marcadores[tamanhoString][1]] = str; marcadores[tamanhoString][1] = marcadores[tamanhoString][1] + 1; } return Main.dumpAll(listaTamanhos, tamanhoFinal); } }
Editor is loading...
Leave a Comment