Você está na página 1de 11

BUSQUEDA Y ORDENAMIENTOS

EUGENIO HERNANDEZ CONDE


CARLOS QUINTERO TORDECILLA

PROGRAMACION II
PEDRO GUEVARA SALGADO

UNIVERSIDAD DE CORDOBA
FACULTAD DE INGENIERIA
INGENIERIA DE SISTEMAS

MONTERIA CORDOBA
02/09/16
package main;

/**
*
* @author Carlos
*/

//Se declaran los atributos de la clase, en este caso se declaran los vectores
//(VectorCodigo), (vectorNombre), (NumeroCreditos), (Semestre),
//y un atributo para asignar el nmero de elementos que tendr el vector
(tamano).
public class TallerProgramacion {
int VectorCodigo[];
String vectorNombre[];
int NumeroCreditos[];
int Semestre [];
int tamano;
//posteriormente se implementa el mtodo constructor de la clase para
asignar los valores
//iniciales de los atributos
public TallerProgramacion () {
VectorCodigo=null;
vectorNombre=null;
NumeroCreditos=null;
Semestre=null;
tamano=0;

}
//El siguiente mtodo crea el vector en tiempo de ejecucin, posteriormente
se asignara su //tamao
public void crearVector(){
VectorCodigo = new int[tamano];
vectorNombre=new String[tamano];
NumeroCreditos=new int [tamano];
Semestre=new int [tamano];

}
//Se implementa el mtodo modificador para asignar los elementos en cada
posicin del //vector.
public void setVectorCodigo (int p,int val){
VectorCodigo[p]=val;
}
//Se implementa el mtodo que permitir obtener los elementos del vector
public int getVectorCodigo (int p){
return VectorCodigo[p];
}
//Se implementa el mtodo modificador para asignar los elementos en cada
posicin del //vector.
public void setVectorNombre (int p,String val){
vectorNombre[p]=val;
}
//Se implementa el mtodo que permitir obtener los elementos del vector
public String getVectorNombre(int p){
return vectorNombre[p];
}
//Se implementa el mtodo modificador para asignar los elementos en cada
posicin del //vector.
public void setVectorNumeroCreditos (int p,int val){
NumeroCreditos[p]=val;
}
//Se implementa el mtodo que permitir obtener los elementos del vector
public int getVectorNumeroCreditos (int p){
return NumeroCreditos[p];
}
//Se implementa el mtodo modificador para asignar los elementos en cada
posicin del //vector.
public void setVectorSemestre (int p,int val){
Semestre[p]=val;
}
//Se implementa el mtodo que permitir obtener los elementos del vector

public int getVectorSemestre (int p){


return Semestre[p];
}
//Mtodo modificador para asignar el tamao o nmero de elementos del
vector.
public void setTamao (int tam){
tamano=tam;
}
//Mtodo selector que permite obtener el tamao o nmero de elementos
que tiene el //vector.
public int getTamao (){
return tamano;
}
//metodo auxiliar para la implementacion del metodo de busqueda binaria
public void cambiar (int p1 ,int p2){
int aux;
String aux_2;
int aux_3;
int aux_4;
aux=getVectorCodigo(p1);
setVectorCodigo(p1,getVectorCodigo(p2));
setVectorCodigo(p2,aux);
aux_2=getVectorNombre(p1);
setVectorNombre(p1,getVectorNombre(p2));
setVectorNombre(p2,aux_2);
aux_3=getVectorNumeroCreditos(p1);
setVectorNumeroCreditos(p1,getVectorNumeroCreditos(p2));
setVectorNumeroCreditos(p1,aux_3);
aux_4=getVectorSemestre(p1);
setVectorSemestre(p1,getVectorSemestre(p2));
setVectorSemestre(p2,aux_4);

//Implementacin del mtodo auxiliar para buscar la posicin del elemento


ms pequeo del //vector
//y realizar el intercambio.
public int posicionMayor(int inicio){

int i;

int posMayor;
int mayorElemento;
posMayor = inicio;

mayorElemento = getVectorNumeroCreditos(inicio);
for (i=inicio+1; i<=getTamao()-1; i++){

if (getVectorNumeroCreditos(i)> mayorElemento){
mayorElemento = getVectorNumeroCreditos(i);
posMayor = i;
}
}

return posMayor; }
//Implementacion de metodo de intercambio para implementar luego el
metodo de busqueda //binaria
public void metodoSeleccion(){
for (int i=0;i<=getTamao()-1;i++){
cambiar (i,posicionMayor(i));
}
////////// ordenamiento shell cadena string
public void ordenarShell()
{
int intervalo,i,j,k;
intervalo = getTamao() /2;
while (intervalo >0)

{
for (i = intervalo;i<getTamao(); i++)
{
j=i-intervalo;
while (j>=0)
{
k = j+intervalo;
if
(getVectorNombre(j).compareTo(getVectorNombre(k))<0){
j = -1;
}
else{
cambiar(j, k);
j -= intervalo;
}
}
}
intervalo = intervalo / 2;
}
}
//Implementacion del metodo borbuja, el cual nos permite comparar todos
con todos //generando multiples comparaciones extras en el vector.
public void Burbuja(){
int i,j;
for ( i=0;i<=getTamao()-1;i++){
for (j=0;j<=(getTamao()-i)-2;j++){
if (getVectorCodigo(j)>getVectorCodigo(j+1)){
cambiar(j,j+1);
}
}
}
}
//implementacion del metodo de busqueda binaria

public int buscarCodigo(int dato){


int posicion,izq,derecha,centro;
izq=0;
derecha=getTamao()-1;
metodoIntercambio();
posicion=-1;
while ((izq <= derecha) && (posicion == -1)){
centro=(izq+derecha)/2;
if (dato==(getVectorCodigo(centro)) ){
posicion=centro;
}else {
if (dato<(getVectorCodigo(centro))){
derecha=centro-1;
}else{
izq=centro+1;
}
}
}
return posicion;
}

}
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////

package main;

import javax.swing.JOptionPane;

/**
*
* @author Carlos

*/
public class Main {

//Implementacin del mtodo que despliega el men de opciones para


escoger por cual //mtodo buscar los elementos.
public static int menu(){
int opcion=0;
do {
opcion = Integer.parseInt(JOptionPane.showInputDialog("======
SELECCIONE EL METODO DE BUSQUEDA ====== \n"+ "1.Busqueda
Binaria\n"+"2. OrdenarAsignaturas segun creditos \n"+"3.Ordenar
alfabeticamente"+" 4.OrdenarCodigo"+" 5.salir\n \n Seleccione una opcion
del 1 al 5"));
}while(opcion<=0||opcion>5);{
return opcion;
}

//se crea un metodo que permita mostrar los elementos del vector.
public static void Mostrar (TallerProgramacion mostrar){
for (int i=0;i<mostrar.getTamao();i++){
String datosVect="";
datosVect=datosVect+String.valueOf("CODIGO"+mostrar.getVectorCodigo(i)
+"\n");
datosVect=datosVect+String.valueOf("NOMBRE
ASIGNATURA"+mostrar.getVectorNombre(i)+"\n");
datosVect=datosVect+String.valueOf("SEMESTRE"+mostrar.getVectorSemes
tre(i)+"\n");
datosVect=datosVect+String.valueOf("CREDITOS"+mostrar.getVectorNumer
oCreditos(i)+"\n");

JOptionPane.showMessageDialog(null, "============
ELEMENTOS DEL VECTOR============"+"\n"+ datosVect);
}

}
public static void main(String[] args) {
// Se crea un objeto de la clase TallerProgramacion llamado ordenar para
acceder a los
//mtodos pbicos implementados en la clase.
TallerProgramacion Taller=new TallerProgramacion();
int tamao=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite
el tamao "));
Taller.setTamao(tamao);
Taller.crearVector();
for (int i=0;i<Taller.getTamao();i++){
String nom=(JOptionPane.showInputDialog(null,"nombre
asignatura"+i+":"));
Taller.setVectorNombre(i, nom);
int creditos = Integer.parseInt(JOptionPane.showInputDialog(null,
"Digitar creditos de la asignatura "+i+": "));
Taller.setVectorNumeroCreditos(i, creditos);
int codigo = Integer.parseInt(JOptionPane.showInputDialog(null,
"Digitar codigo de la asignatura "+i+": "));
Taller.setVectorCodigo(i, codigo);
int semestre = Integer.parseInt(JOptionPane.showInputDialog(null,
"Digitar semestre "+i+": "));
Taller.setVectorSemestre(i, semestre);
}
JOptionPane.showMessageDialog(null, "LOS DATOS SE HAN LLENADO
CORRECTAMENTE");
Mostrar(Taller);
int datoBuscar;
int posicionDato;
int opcion;
do{

opcion=menu();
switch(opcion) {

case 1:
datoBuscar =
Integer.parseInt(JOptionPane.showInputDialog(null, "Digite el dato que desea
buscar:"));
posicionDato = Taller.buscarCodigo(datoBuscar);
if(posicionDato != -1){
JOptionPane.showMessageDialog(null, "El elemento
"+Taller.getVectorCodigo(posicionDato)+ " se encuentra en la posicin
"+posicionDato+" del vector");
}else{
JOptionPane.showMessageDialog(null, "El Elemento No se
encuentra en el vector");
}
break;
case 2:
Taller.metodoSeleccion();
Mostrar(Taller);
break;
case 3:
Taller.ordenarShell();
Mostrar(Taller);
break;
case 4:
Taller.Burbuja();
Mostrar(Taller);
break;
}
}while(opcion != 5);
}
}

Você também pode gostar