aeds2/fonte/u03 Ordenação em memória pr.../java/Geracao.java

161 lines
2.6 KiB
Java

/**
* Geracao de elementos de um array
* @author Max do Val Machado
* @version 3 08/2020
*/
import java.util.*;
class Geracao {
protected int[] array;
protected int n;
/**
* Construtor.
*/
public Geracao(){
array = new int[100];
n = array.length;
}
/**
* Construtor.
* @param int tamanho do array de numeros inteiros.
*/
public Geracao(int tamanho){
array = new int[tamanho];
n = array.length;
}
/**
* Produz um array ordenado de modo crescente.
*/
public void crescente() {
for (int i = 0; i < n; i++) {
array[i] = i;
}
}
/**
* Produz um array ordenado de modo decrescente.
*/
public void decrescente() {
for (int i = 0; i < n; i++) {
array[i] = n - 1 - i;
}
}
/**
* Produz um array com numeros aleatorios.
*/
public void aleatorio() {
Random rand = new Random();
crescente();
for (int i = 0; i < n; i++) {
swap(i, Math.abs(rand.nextInt()) % n);
}
}
/**
* Efetua a leitura dos elementos via entrada padrao.
*/
public void entradaPadrao() {
n = MyIO.readInt();
array = new int[n];
for (int i = 0; i < n; i++) {
array[i] = MyIO.readInt();
}
}
/**
* Recebe um Efetua a leitura dos elementos via entrada padrao.
*/
public void entrada(int[] vet){
n = vet.length;
array = new int[n];
for(int i = 0; i < n; i++){
array[i] = vet[i];
}
}
/**
* Mostra os k primeiros elementos do array.
* @param int k indica a quantidade de elementos do array a serem mostrados.
*/
public void mostrar(int k) {
System.out.print("[");
for (int i = 0; i < k; i++) {
System.out.print(" ("+i+")" + array[i]);
}
System.out.println("]");
}
/**
* Mostra os elementos do array.
*/
public void mostrar() {
System.out.print("[");
for (int i = 0; i < n; i++) {
System.out.print(" ("+i+")" + array[i]);
}
System.out.println("]");
}
/**
* Troca o conteudo de duas posicoes do array
* @param i int primeira posicao
* @param j int segunda posicao
*/
public void swap(int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
/**
* Retorna o timestamp atual
* @return timestamp atual
*/
public long now(){
return new Date().getTime();
}
/**
* Retorna verdadeiro/falso indicando se o array esta ordenado
* @return boolean indicando se o array esta ordenado
*/
public boolean isOrdenado(){
boolean resp = true;
for(int i = 1; i < n; i++){
if(array[i] < array[i-1]){
i = n;
resp = false;
}
}
return resp;
}
/*
* Metodo a ser implementado nas subclasses
*/
public void sort(){
System.out.println("Método a ser implementado nas subclasses.");
}
}