Insertion Sort em Array de Strings não ordena

Java

Lógica de programação

05/04/2019

Boa tarde gente! Estou tendo problemas na parte de ordenação do meu código.

Basicamente o objetivo dele é pegar uma Array de String com 1000 posições e ordenar o campo “Ratings” (campo=2 da string que é float) e ordena-los com o Insertion Sort.

Desde já agradeço se puderem me dar uma luz.

String[] escolhedora(String[] ordenada)
    {
        int i, j;
        float atualAux, anteriorAux;
        String[] atual, anterior, tmp2;
        String tmp;
        for (i = 1; i < tamN; i++)
        {
            atual = ordenada[i].split(",");
            atualAux = Float.parseFloat(atual[campo]);

            anterior = ordenada[i - 1].split(",");
            anteriorAux = Float.parseFloat(anterior[campo]);

            j = i;
            while (j > 0 && anteriorAux > atualAux)
            {
                atual = ordenada[i].split(",");
                atualAux = Float.parseFloat(atual[campo]);

                anterior = ordenada[i - 1].split(",");
                anteriorAux = Float.parseFloat(anterior[campo]);

                tmp = ordenada[j];
                ordenada[j] = ordenada[j - 1];
                ordenada[j - 1] = tmp;
                j--;
            }
        }
        for (i = 0; i < tamN; i++)
        {
            tmp2 = ordenada[i].split(",");
            System.out.println(tmp2[campo]);
        }
        return ordenada;
    }
Mathews

Mathews

Curtidas 0

Respostas

Ricardo Pestana

Ricardo Pestana

05/04/2019

bom dia,

posta a chamada desse método, e se possível com um exemplo do array que vc passa como parâmetro ...


abraço,

GOSTEI 0
Mathews

Mathews

05/04/2019

bom dia,

posta a chamada desse método, e se possível com um exemplo do array que vc passa como parâmetro ...


abraço,



Bom dia!

Chamada do Metodo:

void leEOrdena(File arquivo) throws FileNotFoundException, IOException
    {
        // Cria vetor, gera TAMANHON valores aleatorios e os coloca em ordem crescente para ler as respectivas linhas do arquivo
        int vetor1[] = geraRandom();
        ordenaVet(vetor1);

        // Le as linhas do arquivo e armazena no array de String "str", onde cada posição da str é uma linha do arquivo
        String[] str = leArquivo(vetor1);

        // Ordena o Array de Strings "str" baseado no campo (2-Ratings) que é um valor estático passado anteriormente para o construtor
        String[] ordenada = escolhedora(str);
  }



Exemplo do que está no arquivo ratings.csv para ser lido:

userId,movieId,rating,timestamp
1,31,2.5,1260759144
1,1029,3.0,1260759179
1,1061,3.0,1260759182
1,1129,2.0,1260759185
1,1172,4.0,1260759205
1,1263,2.0,1260759151
1,1287,2.0,1260759187
1,1293,2.0,1260759148
1,1339,3.5,1260759125

São 100.005 linhas com esse tipo de dado .csv. A ideia do programa é ler 1000 linhas aleatórias do csv, armazenar numa string e ordenar essa string com o InsertionSort. O erro tá sendo só na parte de ordenar a string mesmo.
GOSTEI 0
POSTAR