/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package busquedasb;

/**
 *
* Ana Teresa Ramírez Morones
 * 512873
 * Josue Alexis Ramírez 513622
 * Jose María de la Garza 513097
 * Luis Iván García
 * 3er Semestre ITIC
 */
public class Binaria extends Busqueda implements MOrdenamiento{/*Creación de la clase hija Binaria, la cual hereda de la Busqueda el método abstracto buscar,
    en esta clase se implementará dicho método, haciendo énfasis en el tipo de búsqueda binaria, 
    la cual puede ser realizada solamente en un arreglo ordenado
    */
    
    @Override//Se utiliza el comando override para indicar que esta es la implementación del método buscar en la clase padre
    public int Busqueda(int [] arr, int e) {/*
        Implementación del método abstracto buscar, para la clase Binaria, el cuál hará  una busqueda binaria
        de un determinado dato dentro de un arreglo
        */
        int inicio, fin, centro, valorCentro;//Declaracion de variables 
        
        inicio = 0;//inicializar inicio en 0
        fin = arr.length - 1;// el valor de fin sera igual a la longitud del vector menos 1
        while(inicio < fin){//Mientras el valor de inicio se menor que fin entonces 
          centro = (inicio + fin)/ 2;//Centro valdra (inicio + fin) entre dos
          valorCentro = arr[centro];// el valor del centro, tomará el valor de la posición centro dentro del arreglo
          if(valorCentro == e){//Si el valor del centro es igual al valor solicitado por el usuario, entonces
              return centro;//regresamos el valor de centro, pues es el que buscamos
          }else{//Sino 
              if(e < valorCentro){/*si el valor solicitado es menor a valor centro, entonces
                  el valor de fin tomara el valor de centro de -1, lo cual lo recorrera a un espacio antes de centro, sino
                  inicio tomaría el valor de cantro +1 recorriendole a un espacio delante de centro
                  
                  */
                  fin = centro - 1;
              }else{
                  inicio = centro +1;
              }
                  
          }
              
          
        }
        return -1;//Si el ciclo termina y no se encontro el elemento entonces se regresa -1
       
        
        
    }
    
    @Override
     public void MSeleccion(int V[]){ 
        int i, j, menor, pos, tmp;
          for (i = 0; i < V.length - 1; i++) { // tomamos como menor el primero
                menor = V[i]; // de los elementos que quedan por ordenar
                pos = i; // y guardamos su posición
                for (j = i + 1; j < V.length; j++){ // buscamos en el resto
                      if (V[j] < menor) { // del array algún elemento
                          menor = V[j]; // menor que el actual
                          pos = j;
                      }
                }
                if (pos != i){ // si hay alguno menor se intercambia
                    tmp = V[i];
                    V[i] = V[pos];
                    V[pos] = tmp;
                }
          }
    }
    @Override
    public void MBurbuja(int V[]){
         int i, j, aux;
         for(i=0;i<V.length-1;i++)
              for(j=0;j<V.length-i-1;j++)
                   if(V[j+1]<V[j]){
                      aux=V[j+1];
                      V[j+1]=V[j];
                      V[j]=aux;
                   }
    }
    @Override
    public void MQSort(int V[],int der,int izq){
         int pivote=V[izq]; // tomamos primer elemento como pivote
            int i=izq; // i realiza la búsqueda de izquierda a derecha
            int j=der; // j realiza la búsqueda de derecha a izquierda
            int aux;

            while(i<j){            // mientras no se crucen las búsquedas
               while(V[i]<=pivote && i<j) i++; // busca elemento mayor que pivote
               while(V[j]>pivote) j--;         // busca elemento menor que pivote
               if (i<j) {                      // si no se han cruzado                      
                   aux= V[i];                  // los intercambia
                   V[i]=V[j];
                   V[j]=aux;
               }
             }
             V[izq]=V[j]; // se coloca el pivote en su lugar de forma que tendremos
             V[j]=pivote; // los menores a su izquierda y los mayores a su derecha
             if(izq<j-1)
                MQSort(V,izq,j-1); // ordenamos subarray izquierdo
             if(j+1 <der)
                MQSort(V,j+1,der); // ordenamos subarray derecho
          }
}
    
    
    


@@ -205,17 +205,58 @@
 %0A%0A/**%0A *
-%0A
+ Jumpstarters%0A * Brincando hacia la cima%0A 
 * Ana Te
@@ -275,19 +275,16 @@
  Morones
-%0A *
  512873%0A
@@ -366,16 +366,27 @@
 n Garc%C3%ADa
+  A01410530
 %0A * 3er 
@@ -723,16 +723,80 @@
 ordenado
+, ademas de que implementa lo que esta en la clase MOrdenamiento
 %0A    */%0A
@@ -2578,16 +2578,63 @@
 t V%5B%5D)%7B 
+//Se inicia el metodo de ordenamiento Selecci%C3%B3n
 %0A       
@@ -3406,16 +3406,62 @@
 nt V%5B%5D)%7B
+ //Se inicia el metodo de ordenamiento Burbuja
 %0A       
@@ -3515,86 +3515,212 @@
 i++)
-%0A              for(j=0;j%3CV.length-i-1;j++)%0A                   if(V%5Bj+1%5D%3CV%5Bj%5D)%7B
+//Se abre el primer ciclo para controlar el vector%0A              for(j=0;j%3CV.length-i-1;j++)//Se abre el segundo ciclo para ordenar%0A                   if(V%5Bj+1%5D%3CV%5Bj%5D)%7B//Si un dato es menor que el anterior
 %0A   
@@ -3808,32 +3808,53 @@
        V%5Bj%5D=aux;
+//Se cambia los datos
 %0A               
@@ -3927,16 +3927,64 @@
 nt izq)%7B
+ //Se inicia el metodo de ordenamiento Quicksort
 %0A       

Update Binaria.java