Imprimir os Baldes do método bucket sort

Olá Pessoal estou com uma dúvida, estou trabalhando em um exercício de java que é para fazer o método de ordenação bucket sort.
Eu tenho o código ele imprime o array antes e depois da ordenação, mas queira tipo imprimir os baldes e cada número correspondente dentro dele, tentei criar um for dentro da parte que ele expande o array de valores mas ele me retorna 10 arrays com 0 e 1, ja tentei um for fora do for que gera os números dos baldes mas mesmo assim ele imprimi vários valores e não os valores dentro dos baldes.

import java.util.*;
 
public class BucketSort{
 
   public static void sort(int[] a, int maxVal) {
      int [] bucket=new int[maxVal+1];
 
      for (int i=0; i<bucket.length; i++) {
         bucket[i]=0;
      }
 
      for (int i=0; i<a.length; i++) {
         bucket[a[i]]++;
      }
 
      int outPos=0;
      for (int i=0; i<bucket.length; i++) {
         for (int j=0; j<bucket[i]; j++) {
            a[outPos++]=i;
         }
      }
   }
 
 
   public static void main(String[] args) {
      int maxVal=5;
      int [] data= {5,3,0,2,4,1,0,5,2,3,1,4}; 
 
      System.out.println("Antes: " + Arrays.toString(data));
      sort(data,maxVal);
      System.out.println("Depois:  " + Arrays.toString(data));
   }
}

Seleciona ele e clica no botão de texto pré-formatado: </>

1 curtida

Isso esta realmente funcionando?
Não entendi a forma que você fez o bucket… estou mais acostumado com esse modelo:
https://pt.wikipedia.org/wiki/Bucket_sort#Exemplo_em_Java_com_LinkedList

Está sim Ofidomundo, está ordenando corretamente, vou verificar esse que me passou.
Vlw!

1 curtida