Advertisement
Avdluna

COUNTINGSORT

Nov 6th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.53 KB | None | 0 0
  1. package sorting.linearSorting;
  2.  
  3. import java.util.Arrays;
  4.  
  5. import sorting.AbstractSorting;
  6.  
  7. /**
  8.  * Classe que implementa a estratรฉgia de Counting Sort vista em sala. Procure
  9.  * evitar desperdicio de memoria alocando o array de contadores com o tamanho
  10.  * sendo o mรกximo inteiro presente no array a ser ordenado.
  11.  *
  12.  */
  13. public class CountingSort extends AbstractSorting<Integer> {
  14.  
  15.     @Override
  16.     public void sort(Integer[] array, int leftIndex, int rightIndex) {
  17.        
  18.         Integer maior = achaMaior(array,leftIndex,rightIndex);
  19.        
  20.         Integer[] aux = new Integer[maior];
  21.         Integer[] resp = new Integer[array.length];
  22.        
  23.         preencherZero(aux);
  24.        
  25.         for (int i = leftIndex; i < rightIndex; i++) {
  26.             Integer num = array[i];
  27.             aux[num - 1]++;
  28.         }
  29.         Arrays.toString(aux);
  30.        
  31.         for (int i = leftIndex + 1; i < rightIndex; i++) {
  32.             aux[i] += aux[i - 1];
  33.         }
  34.        
  35.         for (int i = rightIndex - 1; i >= leftIndex; i--) {
  36.             Integer num = aux[array[i]] - 1;
  37.             resp[num] = array[i];
  38.         }
  39.     }
  40.  
  41.     private void preencherZero(Integer[] aux) {
  42.         for (int i = 0; i < aux.length; i++) {
  43.             aux[i] = 0;
  44.         }
  45.        
  46.     }
  47.  
  48.     private Integer achaMaior(Integer[] array, int leftIndex, int rightIndex) {
  49.         Integer maior = array[0];
  50.        
  51.         for(int i = leftIndex; i < rightIndex ; i++){
  52.             if(array[i] > maior){
  53.                 maior = array[i];
  54.             }
  55.         }
  56.         return maior;
  57.     }
  58.  
  59.     public static void main (String[] args){
  60.        
  61.         Integer[] a = {3,1,4,1};
  62.        
  63.         CountingSort cs = new CountingSort();
  64.        
  65.         cs.sort(a, 0, a.length);
  66.        
  67.         Arrays.toString(a);
  68.        
  69.     }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement