This commit is contained in:
Daniel Oliveira Capanema 2023-04-03 19:32:56 -03:00 committed by GitHub
parent 8e3a77ccdd
commit c9789e93c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 86 additions and 3 deletions

View File

@ -16,16 +16,17 @@ class Principal {
//algoritmo = new Bolha(n);
//algoritmo = new Countingsort(n);
//algoritmo = new Heapsort(n);
algoritmo = new Insercao(n);
//algoritmo = new Insercao(n);
//algoritmo = new Mergesort(n);
//algoritmo = new Quicksort(n);
algoritmo = new Radixsort(n);
//algoritmo = new Selecao(n);
//algoritmo = new Shellsort(n);
//Geracao do conjunto a ser ordenado
//algoritmo.aleatorio();
algoritmo.crescente();
algoritmo.aleatorio();
//algoritmo.crescente();
//algoritmo.decrescente();

View File

@ -0,0 +1,82 @@
/**
* Metodo de ordenacao por contagem
* @author Daniel Capanema
* @version 1 04/2023
*/
class Radixsort extends Geracao {
/**
* Construtor.
*/
public Radixsort(){
super();
}
/**
* Construtor.
* @param int tamanho do array de numeros inteiros.
*/
public Radixsort(int tamanho){
super(tamanho);
}
/**
* Algoritmo de ordenacao Countingsort.
*/
@Override
public void sort() {
int max = getMaior();
for (int exp = 1; max/exp > 0; exp *= 10) {
sort(exp);
}
}
public void sort(int exp) {
int[] count = new int[10];
int[] output = new int[n];
//Inicializar cada posicao do array de contagem
for (int i = 0; i < 10; count[i] = 0, i++);
//Agora, o count[i] contem o numero de elemento iguais a i
for (int i = 0; i < n; i++) {
count[(array[i]/exp) % 10]++;
}
//Agora, o count[i] contem o numero de elemento menores ou iguais a i
for (int i = 1; i < 10; i++) {
count[i] += count[i-1];
}
//Ordenando
for (int i = n-1; i >= 0; i--) {
output[count[(array[i]/exp) % 10] - 1] = array[i];
count[(array[i]/exp) % 10]--;
}
//Copiando para o array original
for (int i = 0; i < n; i++) {
array[i] = output[i];
}
}
/**
* Retorna o maior elemento do array.
* @return maior elemento
*/
public int getMaior() {
int maior = array[0];
for (int i = 1; i < n; i++) {
if(maior < array[i]){
maior = array[i];
}
}
return maior;
}
}