Código Aquí
package ejercicio;
import java.util.Date;
/**
*
* @author Sarurai
*/
public class Ejercicio {
/**
*
* @param vector
*
*/
public void ordSeleccion(Vehiculo[] vector) {
int indiceMenor, i, j, n;
n = vector.length;
for (i = 0; i < n - 1; i++) {
// comienzo de la exploración en índice i
indiceMenor = i;
// j explora la sublista a[i+1]..a[n-1]
for (j = i + 1; j < n; j++) {
if (vector[j].compareTo(vector[indiceMenor]) < 0) {
indiceMenor = j;
}
}
// sitúa el elemento mas pequeño en a[i]
if (i != indiceMenor) {
Vehiculo aux = vector[i];
vector[i] = vector[indiceMenor];
vector[indiceMenor] = aux;
}
}
}
/**
*
* @param vector
*
*/
public void ordInsercion(Vehiculo[] vector) {
int n = vector.length;
int i, j;
Vehiculo aux;
for (i = 1; i < n; i++) {
/* indice j es para explorar la sublista a[i-1]..a[0] buscando la
posicion correcta del elemento destino*/
j = i;
aux = vector[i];
// se localiza el punto de inserción explorando hacia abajo
while (j > 0 && (aux.compareTo(vector[j - 1]) < 0)) {
// desplazar elementos hacia arriba para hacer espacio
vector[j] = vector[j - 1];
j--;
}
vector[j] = aux;
}
}
/**
*
* @param vector
*
*/
public void burbuja(Vehiculo[] vector) {
int n = vector.length;
for (int i = 0; i < n - 1; i++) // sitúa mínimo de a[i+1]...a[n-1] en a[i]
{
for (int j = i + 1; j < n; j++) {
if ((vector[i].compareTo(vector[j])) > 0) {
Vehiculo aux = vector[i];
vector[i] = vector[j];
vector[j] = aux;
}
}
}
}
/**
*
* @param vector
*
*/
public void shellSort(Vehiculo[] vector) {
int intervalo, i, j, k;
int n = vector.length;
intervalo = n / 2;
while (intervalo > 0) {
for (i = intervalo; i < n; i++) {
j = i - intervalo;
while (j >= 0) {
k = j + intervalo;
if (vector[j].compareTo(vector[k]) <= 0) {
j = -1; // par de elementos ordenado
} else {
Vehiculo aux = vector[j];//intercambio
vector[j] = vector[j + 1];
vector[j + 1] = aux;
j -= intervalo;
}
}
}
intervalo = intervalo / 2;
}
}
/**
*
* @param vector
*
*/
public void quickSort(Vehiculo vector[]) {
int n = vector.length;
quicksort(vector, 0, n - 1);
}
private void quicksort(Vehiculo a[], int primero, int ultimo) {
int i, j, central;
Vehiculo pivote;
central = (primero + ultimo) / 2;
pivote = a[central];
i = primero;
j = ultimo;
do {
while (a[i].compareTo(pivote) < 0) {
i++;
}
while (a[j].compareTo(pivote) > 0) {
j--;
}
if (i <= j) {
Vehiculo aux = a[i]; //intercambio
a[i] = a[j];
a[j] = aux;
i++;
j--;
}
} while (i <= j);
if (primero < j) {
quicksort(a, primero, j); // mismo proceso con sublista izqda
}
if (i < ultimo) {
quicksort(a, i, ultimo); // mismo proceso con sublista drcha
}
}
public void mergeSort(Vehiculo arreglo[]) {
int n = arreglo.length;
Vehiculo tmpArray[] = new Vehiculo[n];
mergeSort(arreglo, tmpArray, 0, n - 1);
}
private void mergeSort(Vehiculo a[], Vehiculo b[], int izq, int der) {
int centro;
if (izq < der) {
centro = (izq + der) / 2;
mergeSort(a, b, izq, centro);
mergeSort(a, b, centro + 1, der);
fusion(a, b, izq, centro + 1, der);
}
}
private void fusion(Vehiculo a[], Vehiculo b[], int izq, int centro, int der) {
int finalIzq, nroelem, tmp;
finalIzq = centro - 1;
tmp = izq;
nroelem = der - izq + 1;
while ((izq <= finalIzq) && (centro <= der)) {
if (a[izq].compareTo(a[centro]) < 0) {
b[tmp] = a[izq];
izq++;
} else {
b[tmp] = a[centro];
centro++;
}
tmp++;
}
while (izq <= finalIzq) {
b[tmp] = a[izq];
tmp++;
izq++;
}
while (centro <= der) {
b[tmp] = a[centro];
tmp++;
centro++;
}
for (int i = 1; i <= nroelem; i++) {
a[der] = b[der];
der--;
}
}
public void listar(Vehiculo arreglo[]) {
int pos = arreglo.length;
for (int i = 0; i < pos; i++) {
System.out.println((i + 1) + " : " + arreglo[i].toString());
}
System.out.println(".........................................................................");
}
public static void main(String[] args) {
Ejercicio metodo = new Ejercicio();
Vehiculo arreglo[] = new Vehiculo[5];
arreglo[0] = new Vehiculo("ada27", 30000D, new Date(1183282843222L));
arreglo[1] = new Vehiculo("chj5", 27000D, new Date(1090092212322L));
arreglo[2] = new Vehiculo("cjk77", 40000D, new Date(1228998294563L));
arreglo[3] = new Vehiculo("bmn90", 35000D, new Date(1393911139902L));
arreglo[4] = new Vehiculo("asd31", 17000D, new Date(1297484838999L));
System.out.println("estado primero");
metodo.listar(arreglo);
System.out.println("estado ordenado");
// metodo.burbuja(arreglo);
// metodo.ordInsercion(arreglo);
// metodo.ordSeleccion(arreglo);
// metodo.shellSort(arreglo);
// metodo.mergeSort(arreglo);
metodo.quickSort(arreglo);
metodo.listar(arreglo);
}
}
..........................................................................................................................................................
Clase Vehiculo
package ejercicio;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
* @author Sarurai
*/
public class Vehiculo implements Comparable{
private String placa;
private Double precio;
private Date fechaFabricacion;
public Vehiculo() {
}
public Vehiculo(String placa, Double precio, Date fechaFabricacion) {
this.placa = placa;
this.precio = precio;
this.fechaFabricacion = fechaFabricacion;
}
public String getPlaca() {
return placa;
}
public void setPlaca(String placa) {
this.placa = placa;
}
public void setPrecio(Double precio) {
this.precio = precio;
}
public void setFechaFabricacion(Date fechaFabricacion) {
this.fechaFabricacion = fechaFabricacion;
}
public Double getPrecio() {
return precio;
}
public Date getFechaFabricacion() {
return fechaFabricacion;
}
@Override
public String toString() {
SimpleDateFormat formateador = new SimpleDateFormat("yyyy/MM/dd");
return "{ placa= " + placa + ", precio= " + precio + ", fechaFabricacion=" + formateador.format(fechaFabricacion) + " }";
}
@Override
public int compareTo(Object o) { //comparamos String
Vehiculo c = (Vehiculo) o;
int fechaCmp = this.fechaFabricacion.compareTo(c.fechaFabricacion);
return fechaCmp;// aqui solo podemos poner returm placaCmp;
}
}
Captura
No hay comentarios:
Publicar un comentario