Código aquí
package ejercicio;
import java.util.Date;
/**
*
* @author Sarurai
*/
public class Ejercicio {
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 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 int busquedaLineal(Vehiculo[] vector, Vehiculo dato) {
int n = vector.length;
int pos = -1;
for (int i = 0; ((i < n) && (pos == -1)); i++) {
if (vector[i].compareTo(dato) == 0) {
pos = i;
}
}
return pos;
}
/**
*
* @param vector
* @param dato
* @return
*/
public int busquedaBinaria(Vehiculo[] vector, Vehiculo dato) {
Ejercicio metodo = new Ejercicio();
metodo.quickSort(vector);
int n = vector.length;
int izq = 0;
int der = n - 1;
int centro = (izq + der) / 2;
while ((izq <= der) && (!(vector[centro].compareTo(dato) == 0))) {
if (dato.compareTo(vector[centro]) < 0) {
der = centro - 1;
} else {
izq = centro + 1;
}
centro = (izq + der) / 2;
}
if (izq > der) {
return -1;
} else {
return centro;
}
}
public int busquedaLinealRec(Vehiculo[] vector, Vehiculo dato) {
int n = vector.length;
int i = this.busquedaLinealRecursiva(vector, dato, n - 1, 0);
return i;
}
private int busquedaLinealRecursiva(Vehiculo a[], Vehiculo clave, int n, int i) {
if (i == n + 1) {
return -1;
} else {
if (a[i].compareTo(clave) == 0) {
return i;
} else {
return busquedaLinealRecursiva(a, clave, n, i + 1);
}
}
}
public int busquedaBinariaRec(Vehiculo[] vector, Vehiculo dato) {
Ejercicio metodo = new Ejercicio();
metodo.quickSort(vector);
int n = vector.length;
int i = this.busquedaBinariaRecursiva(vector, 0, n - 1, dato);
return i;
}
private int busquedaBinariaRecursiva(Vehiculo vector[], int izq, int der, Vehiculo dato) {
int centro = (izq + der) / 2;
if (izq > der) {
return -1;
} else if (dato.compareTo(vector[centro]) == 0) {
return centro;
} else if (dato.compareTo(vector[centro]) < 0) {
return busquedaBinariaRecursiva(vector, izq, centro - 1, dato);
} else {
return busquedaBinariaRecursiva(vector, centro + 1, der, dato);
}
}
public static void main(String[] args) {
Ejercicio metodo = new Ejercicio();
Vehiculo arreglo[] = new Vehiculo[5];
arreglo[0] = new Vehiculo("ada27", 30000D, new Date(112, 10, 12));
arreglo[1] = new Vehiculo("chj5", 27000D, new Date(100, 5, 23));
arreglo[2] = new Vehiculo("cjk77", 40000D, new Date(109, 3, 22));
arreglo[3] = new Vehiculo("bmn90", 35000D, new Date(104, 11, 19));
arreglo[4] = new Vehiculo("asd31", 17000D, new Date(105, 12, 21));
System.out.println("Arreglo con datos");
metodo.listar(arreglo);
Date dato = new Date(104, 11, 19);//podemos validar la fecha revisar entarada antigua
System.out.println("FEcha buscada es "+ dato.toString());
Vehiculo datoVehiculo = new Vehiculo(null, null, dato);
int num;
num = metodo.busquedaLineal(arreglo, datoVehiculo);
// metodo.quickSort(arreglo);
// num = metodo.busquedaLinealRec(arreglo, datoVehiculo);
// num = metodo.busquedaBinaria(arreglo, datoVehiculo);// para que imprima correctamente primero tiene que ordenarlo
// num = metodo.busquedaBinariaRec(arreglo, datoVehiculo);
if(num>0){
System.out.println("El elemneto encontado es "+ arreglo[num].toString());
}else{
System.out.println("Elemento no encontrado");
}
}
}
..........................................................................................................................................................
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