54. Programación en C++ || Búsquedas || Búsqueda Binaria en un arreglo

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 ธ.ค. 2024

ความคิดเห็น • 236

  •  6 ปีที่แล้ว +18

    💻 Apúntate al curso completo de Programación en C++:
    Hotmart: hotmart.com/es/marketplace/productos/programacion-en-c-v0ivo/N78682741H

    • @mercedeslanzbanquet3730
      @mercedeslanzbanquet3730 4 ปีที่แล้ว

      Que pasa si en la búsqueda binaria algún número está repetido

    • @sebastihb2906
      @sebastihb2906 4 ปีที่แล้ว +1

      @@mercedeslanzbanquet3730 amiguito programacion ats murio :'C.
      Alejandro a fallecido.

    • @pueblosoriginarios3022
      @pueblosoriginarios3022 3 ปีที่แล้ว

      fe de erratas //el numero no //ha// en vez de // a// o sea del verbo haber.

    • @feni8474
      @feni8474 3 ปีที่แล้ว

      @@sebastihb2906 QUEEEEEEEEEEEEE

  • @aerostofones
    @aerostofones 3 ปีที่แล้ว +109

    Uno poco tarde evidentemente, acabo de enterarme de que ya no estas entre nosotros. Gracias por tu tiempo y dedicación. Descansa

    • @artoriasof_the_abyss7710
      @artoriasof_the_abyss7710 3 ปีที่แล้ว

      ?

    • @mauriciobalderrama636
      @mauriciobalderrama636 3 ปีที่แล้ว

      @@artoriasof_the_abyss7710 fallecio el estimado ATS :(

    • @rodrigoe.martinmusri8775
      @rodrigoe.martinmusri8775 3 ปีที่แล้ว

      Me quede de piedra, que le paso?

    • @SimonRRFTP
      @SimonRRFTP 3 ปีที่แล้ว +9

      @@rodrigoe.martinmusri8775 Falleció, lamentablemente, de cáncer de rodilla. Le salió varias veces en la rodilla derecha, luego en la izquierda y terminó por expandirse hacia sus pulmones.
      Jamás dijo una palabra al respecto porque pensaba que saldría de esa situación.

    • @Adolin.Kholin.
      @Adolin.Kholin. 3 ปีที่แล้ว

      @@SimonRRFTP waoooo, que noticia tan trágica. Este chico tenía muchísimo potencial como programador. Y supongo que tenía que ser una buena persona igual.

  • @ferxas4560
    @ferxas4560 2 ปีที่แล้ว +34

    Es notable la pasión que tenías para explicar y ejemplificar. Descansa en paz Alejandro, tus enseñanzas y conocimientos siempre dejarán un buen legado en tu memoria.

  • @nagatoroijiranaide4408
    @nagatoroijiranaide4408 4 ปีที่แล้ว +17

    Programa resuelto:
    #include
    #include
    #include
    using namespace std;
    int main(){
    //Info
    int vec[USHRT_MAX];
    int inf = 0, mid, sup, dato, n;
    //Conteo
    int i = 0;
    char band = 'F';
    //Ordenamiento
    int pos, aux;
    //Opcion
    int opcion;
    //INGRESO DE DATOS
    cout

  • @diegodagm
    @diegodagm 4 ปีที่แล้ว +18

    la condición del while simplemente debería de ser:
    while(inf

    • @Ary_Daniel
      @Ary_Daniel ปีที่แล้ว

      Mh... es buena la idea pero te voy a poner un contexto diferente, una lista de 500 números, mitad inicia en 250 y en "dato" a buscar es 10, teniendo como proceso el código del video numeros[mitad] (en este caso 500), ágamos el procedimiento:
      Se sumaria (inf + sup)/2
      (0+255)/2 = 127.5 (que se redondea a 128 creo)
      Ahora tomemos como base tu código números mitad] es mayor que "dato", entonces ahora sup valdría 449 y ahora vamos a hacer la cuenta
      (inf + sup)/2
      (0 + 449)/2 = 224.5
      Como vez en el caso de video dimos un salto de 128 números, mientras que en tu propuesta solo restamos 1
      Espero poder haber ayudado, igual puedes retroalimentar si me falto algo

    • @nicoblanco8541
      @nicoblanco8541 ปีที่แล้ว

      @@Ary_Daniel Si no me equivoco, la división entera elimina el resto; es decir, siempre se trunca

    • @Ary_Daniel
      @Ary_Daniel ปีที่แล้ว

      @@nicoblanco8541 Te refieres a que el 127.5 se redonde a 127, acaso e entendido bien?

    • @carlospineda6381
      @carlospineda6381 ปีที่แล้ว

      @@Ary_Daniel Hola, no soy yo el del comentario pero si, si tienes un 127.5 y lo vas a almacenar en una variable entera, el numero se almacenara sin su parte decimal, es decir el .5 no se va a guardar ni redondear, simplemente se quedara en 127
      Espero haber ayudado, saludos.

  • @RoelLealA
    @RoelLealA ปีที่แล้ว +3

    3 años después y sigo aqui aprendiendo y prácticando para concursos, gracias por todo ATS

  • @santiagoalfonsolunarueda8592
    @santiagoalfonsolunarueda8592 4 ปีที่แล้ว +15

    /*Hola, este programa fue hecho con la intencion de hacer cualquier tipo de busqueda*/
    #include
    #include
    using namespace std;
    int main () {
    int arreglo [100];
    int dato=0;
    int numero;
    int pos = 0;
    char band = 'F';
    coutnumero;
    coutdato;
    for (int i=0; i

  • @chiqui1234ok
    @chiqui1234ok 6 ปีที่แล้ว +16

    ¡Hola! Una mini observación :D Ese break está de más. Podrías poner en el while otra condición para que corte cuándo la bandera sea 'V', es decir: while(inf < superior && band == 'V')... y también el char podría ser un bool, creo que es un poco más práctico. ¡Gracias por el tuto!

  • @pablobonsi
    @pablobonsi 9 หลายเดือนก่อน

    gracias amigo, fuiste y sos de gran ayuda, siempre vuelvo a tus videos. Que tristeza :(

  • @klvrmoon9471
    @klvrmoon9471 ปีที่แล้ว +1

    Hoy estoy a punto de entrar a un concurso de programación, y la verdad no estudié nada😔, pero espero que tú vídeo me ayude de algo antes del examen, gracias por todo Alejandro Taboada ❤

  • @emanuelcarbajal6829
    @emanuelcarbajal6829 5 ปีที่แล้ว +14

    Una cosa, tiene un fallo ya que si al principio introduces un número que no está en el arreglo el programa se vuelve infinito ya que de todas maneras entra al While pero como nunca se cumplen las condiciones pues se sigue corriendo y nunca encuentra nada, ejemplo:
    El arreglo tiene {2,4,6,8}
    Y yo quiero buscar el número 5 que no está en el arreglo así que entra pero como el número no está pues nunca se va a cumplir la condición de salida que en este caso es:
    if(numeros[mitad]==dato){
    Band='V'
    Break;
    }
    Entonces como nunca va a ser igual porque el número 5 no está en el arreglo pues se vuelve infinito.
    Mi solución es que se lleve un conteo de cuantas veces se hace el while y si se hace más veces que el número de posiciones del arreglo declarado pues se salga, ejemplo:
    If(conteo==posiciones_del_arreglo){
    Break;
    }
    Conteo++;
    En este caso en cada vuelta lo va a comparar y si ya se hizo las veces que hay de posiciones del arreglo pues por lógica quiere decir que ya no está el número. Buen video

    • @warwarren1684
      @warwarren1684 2 ปีที่แล้ว

      hasta que encontré tu comentario; Buena solución y gracias

    • @edibertocaceresguzman2238
      @edibertocaceresguzman2238 6 หลายเดือนก่อน

      lo mismo observe, gracias por el consejo

    • @jhonygranados2241
      @jhonygranados2241 20 ชั่วโมงที่ผ่านมา

      Gracias por la observación amigo, ya me funcionó al 100, saludos!

  • @promipicode
    @promipicode 4 ปีที่แล้ว +1

    Para los que no entendieron bien la busqueda binaria primero cambien en su mente inf sup y mitad. solo piensen que son tres apuntadores o indices respectivamente. Bueno el apuntador 1 deberia ubicarse en la posicion 0 y el apuntador 2 en la ultima posicion . y el apuntador medio osea el 3 sale de la operacion ap1 + ap2 / 2 osea que si tenemos 5 elementos seria 5 + 0 / 2 ;
    bueno luego se pregunta si numeros ose ael arreglo en la posicion que esta el apuntador 3 que seria 5 / 2 seria 2,5 pero siempre se le hace un floor osea redondear hacia abajo osea 2 . y si no es igual al dato que estamos pidiendo pues pasa al siguiente if y se pregunta si numero[apuntador 3('el del medio') ] es mayor dato por eso es que siempre debe estar ordenado el arreglo y para algo aprendimos los ordenamientos, Bueno si es mayor lo que hace es que al apuntador 2 que estaba quieto le pasamos la posicion del apuntador 3 y entonces hacemos de nuevo la division esa. ap1 + ap / 2 y entonces gracias a esta division ubicamos el apuntador 3 . entonces el ap2 es para que cada vez se vaya reduciendo los numeros y luego el apuntador medio encuentre el valor . Siguiendo la explicacion pues repite el ciclo y se pregunta si ya encontro el valor . si no vuelve a hacer lo que explique hasta reducir ha los mas minimo y encontrar el valor. ENTONCES EL APUNTADOR 3 O MEDIO ES EL QUE NOS ENCUENTRA EL VALOR DEPENDIENDO DE LAS POSICIONES DEL 1 Y EL 2 ENTONCES CUANDO SE PREGUNTA SI ES MAYOR O MENOR HACE EL INTERCAMBIO DE LA POSICION QUE ESTA MEDIO A LA POSICION DEL APUNTADOR DOS O UNO DEPENDIENDO SI ES MAYOR O MENOR Y ASI VUELVE A HACE LA DIVISION COMO DIJE PARA REDUCIR LOS ELEMNTOS HASTA ENCONTRAR Y PONER LA BANDERA EN 'v' DND.
    POSTADATA: IMAGINENSE CUADRADITOS QUE SON LAS POSICIONES Y VAYAN HACIENDO LO QUE EXPLIQUE

  • @martinezmenaximena4413
    @martinezmenaximena4413 4 ปีที่แล้ว +1

    Explica muy bien,esto hace que se facilite todo pero si esta un poco más fácil el anterior
    Ximena M 4IV5 cecyt 14

  • @MarceloChavezFreundt-u7z
    @MarceloChavezFreundt-u7z 7 หลายเดือนก่อน

    EXELENTE BRO!!! Haces que sea sencillo programar... exitos y saludos desde lima-peru

    • @Alex.BP0
      @Alex.BP0 6 หลายเดือนก่อน +1

      El ya murió

  • @idbaronco4194
    @idbaronco4194 5 ปีที่แล้ว +2

    Muy buena aporte! , un plus sería como usar la *búsqueda binaria para buscar un número que aparezca varias veces en el arreglo*

  • @Adolin.Kholin.
    @Adolin.Kholin. 6 ปีที่แล้ว +31

    Hay un pequeño fallo en el algoritmo del video la solucion mas eficas que se me ocurre es hacer el siguiente cambio :
    While((inf+1)!=sup)

    • @cristhianelvisvelasquezven3726
      @cristhianelvisvelasquezven3726 5 ปีที่แล้ว +4

      También noté ese fallo. Y es buena tu solución

    • @kamohisu
      @kamohisu 5 ปีที่แล้ว +6

      While(inc!=sup) sino la posición 0 no la reconoce y la da como si estuviese fuera del array

    • @ricardoolivaresventura4603
      @ricardoolivaresventura4603 5 ปีที่แล้ว +2

      Declaré un vector con elementos de 1 al 9, y cuando de dato pongo un número de 2 cifras el programa compila, pero no hace nada, en cambio cuando de dato pongo un 0 hasta 9 o del 1 negativo al 9 negativo, el programa compila y sí me dice si el dato está en el arreglo o no, alguién podría ayudarme

    • @ddddd84179
      @ddddd84179 4 ปีที่แล้ว

      Exactamente esa es la solucion, muchas gracias por compartir

    • @cristopheracevedo9966
      @cristopheracevedo9966 4 ปีที่แล้ว +1

      ​@TigerXV Agregé esta condición al while y me funcionó bien, podrías probar:
      if((numeros[mitad]==sup)&&(numeros[mitad]

  • @Loremfz
    @Loremfz 7 ปีที่แล้ว +8

    En el video te falto poner la condicion en el mientras de i

    • @Victor-hb2hi
      @Victor-hb2hi 7 ปีที่แล้ว

      así men? :,v
      #include
      #include
      using namespace std;
      int main(){
      int numeros[] = {1,2,3,4,5};
      int inf,sup,mitad,dato,i;
      char band='F';
      dato = 6;
      //Algoritmo de la Busqueda Binaria
      inf = 0;
      sup = 5;
      for (int i=0; idato){
      sup = mitad;
      mitad = (inf+sup)/2;
      }
      if(numeros[mitad]

    • @Adolin.Kholin.
      @Adolin.Kholin. 6 ปีที่แล้ว +1

      Lucas Fiedorowicz mas sencillo:
      While((inf+1)!=sup)

    • @aaronsosaramos6976
      @aaronsosaramos6976 3 ปีที่แล้ว

      @@Adolin.Kholin. Gracias crack

  • @alexissuarezalvarez5622
    @alexissuarezalvarez5622 5 ปีที่แล้ว +4

    hola siempre veo tus tutoriales ,son increíbles. Me gustaría que hagas uno de búsqueda binaria con apuntadores te lo agradecería bastante.

  • @johanz9241
    @johanz9241 4 ปีที่แล้ว +8

    Ya que la variable band es F o V, creo que tendria mas sentido usar una variable de tipo boolean.

  • @LuisAntonioToranzoToribio
    @LuisAntonioToranzoToribio 5 ปีที่แล้ว +13

    Por que no usas los datos booleanos para los flags?

    • @antoner8391
      @antoner8391 2 ปีที่แล้ว

      @Jonas Lara si que existen

  • @jorgeluisramirezfernandez8761
    @jorgeluisramirezfernandez8761 2 ปีที่แล้ว +4

    Faltaria agregar una cosa mas ya que si deseo buscar el dato 5 me aparece que no esta. Para solucionar esto, si dato es mayor a numeros[mitad] el nuevo infimo sera una posicion mas del mitad actual y si el dato es menor al mitad actual el nuevo supremo sera una posicion menos del mitad actual. Ademas que el sup al inicio debe ser 4 que es el indice del ultimo elemento en el arreglo.

  • @jeremymachare7245
    @jeremymachare7245 4 ปีที่แล้ว +10

    //Mi solución para números que no se encuentren en el arreglo:
    #include
    #include
    using namespace std;
    int main(){
    int numeros[]={1,2,3,4,5};
    int inf,sup,mitad,dato;
    char band = 'F';
    dato = 6;
    //Algoritmo busqueda Binaria
    inf = 0;
    sup = 5;
    while(infdato){
    sup=mitad;
    }
    if(numeros[mitad]

  • @SimonRRFTP
    @SimonRRFTP 3 ปีที่แล้ว

    Donde sea que esté, gracias por todo, profe.

  • @Loremfz
    @Loremfz 7 ปีที่แล้ว +1

    Muchas gracias, me estas ayudando mucho con tus videos

  • @EstebanGomez-hm1lc
    @EstebanGomez-hm1lc 8 ปีที่แล้ว +8

    Hola.
    Esto funciona cuando el dato que le paso esta en el arreglo, pero cuando le paso un dato que no esta en el arreglo, el ciclo while se ejecuta infinitamente sin terminar. Use el mismo codigo del ejemplo y creo que no tengo ningun error, pero no puedo encontrar el motivo por que el else del if nunca se ejecuta . Por favor si podes, comprobalo ingresando algun dato que no este en el array.
    Gracias por los tutoriales, saludos!

    • @terrorhd3523
      @terrorhd3523 8 ปีที่แล้ว +3

      Asi es como lo arregle yo: puse un contador (i) que este lo ponia menor al numero de elementos del vector y al final de todos los if le puse el i++; aqui el codigo:
      //Busqueda Binaria
      #include
      #include
      using namespace std;
      int main (){
      int numeros[]={1,2,3,4,5,6,10,142,1000};
      int inf,sup,mitad,dato,i;
      char band = 'F';
      cout dato;
      //Algoritmo de Busqueda Binaria
      inf = 0;
      sup = 9;
      i = 0;
      while ((inf dato){
      sup = mitad;
      mitad = (inf + sup)/2;
      }
      if (numeros [mitad]

    • @EstebanGomez-hm1lc
      @EstebanGomez-hm1lc 8 ปีที่แล้ว +5

      +Terror HD No hace falta esa variable adicional aunque si el codigo funciona es igualmente valido. Cuando mitad > dato, superior es igual a mitad - 1 y cuando mitad < dato, inferior es igual a mitad + 1.
      Solo hay que restar y sumar una unidad a la variable mitad en los if para que el codigo funcione...Saludos

    • @terrorhd3523
      @terrorhd3523 8 ปีที่แล้ว

      Pues yo lo pense asi xD, pero voy a ver lo que dices, lo que yo hice me funciono :D
      PD: Efectivamente, me funciono tu metodo gracias!!

    • @ricardojoselunallanos283
      @ricardojoselunallanos283 7 ปีที่แล้ว +1

      Muchas gracias bro me estube rompiendo la cabeza y no encontraba el error, se te agradece.

    • @JM_Tushe
      @JM_Tushe 6 ปีที่แล้ว +1

      Esteban Gomez
      Tienes razón, así funciona, pero no logro entender por qué. ^_^

  • @d_slayerr
    @d_slayerr 5 ปีที่แล้ว +11

    D.E.P siempre con nosotros

  • @juancastrillon8985
    @juancastrillon8985 2 ปีที่แล้ว +1

    Como te extrañamos.

  • @ronalbello8488
    @ronalbello8488 7 ปีที่แล้ว +12

    Disculpe compa podría explicar el código como el vídeo anterior

    • @darwinalexisarrecheacastil2955
      @darwinalexisarrecheacastil2955 7 ปีที่แล้ว +2

      jajaja yo tampoco entendí la lógica del algoritmo

    • @usuarioanonimo577
      @usuarioanonimo577 6 ปีที่แล้ว

      No entendí un carajo

    • @realNoFAKE-lm2cv
      @realNoFAKE-lm2cv 5 ปีที่แล้ว +3

      Tal vez sea tarde(2 años tarde jajaja). Pero lo que hace esta haciendo es intervalos cada vez más pequeños hasta encontrar el numero deseado. Este programa me recuerda a un un método numérico .

    • @promipicode
      @promipicode 4 ปีที่แล้ว +3

      Hace 1 segundo
      Para los que no entendieron bien la busqueda binaria primero cambien en su mente inf sup y mitad. solo piensen que son tres apuntadores o indices respectivamente. Bueno el apuntador 1 deberia ubicarse en la posicion 0 y el apuntador 2 en la ultima posicion . y el apuntador medio osea el 3 sale de la operacion ap1 + ap2 / 2 osea que si tenemos 5 elementos seria 5 + 0 / 2 ;
      bueno luego se pregunta si numeros ose ael arreglo en la posicion que esta el apuntador 3 que seria 5 / 2 seria 2,5 pero siempre se le hace un floor osea redondear hacia abajo osea 2 . y si no es igual al dato que estamos pidiendo pues pasa al siguiente if y se pregunta si numero[apuntador 3('el del medio') ] es mayor dato por eso es que siempre debe estar ordenado el arreglo y para algo aprendimos los ordenamientos, Bueno si es mayor lo que hace es que al apuntador 2 que estaba quieto le pasamos la posicion del apuntador 3 y entonces hacemos de nuevo la division esa. ap1 + ap / 2 y entonces gracias a esta division ubicamos el apuntador 3 . entonces el ap2 es para que cada vez se vaya reduciendo los numeros y luego el apuntador medio encuentre el valor . Siguiendo la explicacion pues repite el ciclo y se pregunta si ya encontro el valor . si no vuelve a hacer lo que explique hasta reducir ha los mas minimo y encontrar el valor. ENTONCES EL APUNTADOR 3 O MEDIO ES EL QUE NOS ENCUENTRA EL VALOR DEPENDIENDO DE LAS POSICIONES DEL 1 Y EL 2 ENTONCES CUANDO SE PREGUNTA SI ES MAYOR O MENOR HACE EL INTERCAMBIO DE LA POSICION QUE ESTA MEDIO A LA POSICION DEL APUNTADOR DOS O UNO DEPENDIENDO SI ES MAYOR O MENOR Y ASI VUELVE A HACE LA DIVISION COMO DIJE PARA REDUCIR LOS ELEMNTOS HASTA ENCONTRAR Y PONER LA BANDERA EN 'v' DND.
      POSTADATA: IMAGINENSE CUADRADITOS QUE SON LAS POSICIONES Y VAYAN HACIENDO LO QUE EXPLIQUE

    • @michaelgutierrez5214
      @michaelgutierrez5214 4 ปีที่แล้ว +1

      @@promipicode gracias men lo entendí con tu explicación solo me hacía falta que alguien lo explicara detalladamente, ahora si tiene sentido, estaba difícil pero ahora como lo entiendo no, supongo que es cuestión de practicar, un saludo.

  • @braianlux9310
    @braianlux9310 7 ปีที่แล้ว

    chabon me re salvaste para la mesa de examen explicas re bien

    • @martinnieva8484
      @martinnieva8484 7 ปีที่แล้ว

      Jeje, espero que te haya ido bien :)

  • @duvanballesteros4932
    @duvanballesteros4932 2 ปีที่แล้ว

    Alejandro inmensamente agradecido con tus videos, lastima que ya no entre nosotros.
    Nota: Acostumbro a realizar cada ejercicio visto en el video, en esta ocasión para quienes no lo hacen, recomendaría descargar el ejercicio ya que si asignamos un dato diferente al arreglo no sale nada.

    • @chiptunema2518
      @chiptunema2518 2 ปีที่แล้ว

      A mí me pasó lo mismo, lo he comparado con el ejercicio a descargar y me he fijado en que pone un iterador i para salir del bucle while en caso de no encontrar el dato. Tal y como está en el vídeo el programa solo puede salir del bucle si el dato está en el arreglo.

    • @del_terriuts
      @del_terriuts ปีที่แล้ว

      Tienes que añadir un iterador (i) así: while((inf

  • @kevingonzalez-ld6me
    @kevingonzalez-ld6me 4 ปีที่แล้ว +1

    bueno deje aca mi programa puse al final en un condicional if que si numeros[mitad] != dato, entonces el programa se cierre con un break. también deje indicaciones por todo el programa espero que les sirva chicos.
    deje comentarios como guia para entenderlo pongalo en su programa de c++.
    //Busqueda Binaria. la busqueda debe ser 1.2.3.4.5 o sea ascendente . ira diviendo el numero hasta que lo encuentre y se haga break
    #include
    #include
    using namespace std;// 2
    int main(){// 0 1 m 3 4
    int numeros[]={1,2,3,4,5};
    int inf, sup, mitad, dato;
    char band = 'F';

    dato = 4;
    //Algoritmo de la Busqueda Binario
    inf = 0;//limite inferior del arreglo (0).1.2.3.4
    sup = 4;//limite superior del arreglo 0.1.2.3.(4)
    while(inf dato=. ej 3>2 si
    sup = mitad; //entonces sede su valor a sup. entonces superior=3
    mitad= (inf+sup)/2; //0+3/2= 1. (el numero esta en la posicion 1). y es el numero 2 en nuestro arreglo
    }
    if(numeros[mitad] < dato){ //si la posicion[mitad] < dato. 3

    • @canbrosc3z
      @canbrosc3z 3 ปีที่แล้ว +1

      El break que diste para darle salida estuvo super bien , me arreglo muchos problemas, gracias.

  • @sepulvedachavezivanemmanue5997
    @sepulvedachavezivanemmanue5997 4 ปีที่แล้ว +2

    Este video de esta plataforma me ayudo a retomar temas que
    no sabía y mejorar un poco en mi programación respecto a este programa
    aplicarlo en mis actividades
    CECyT_14_4IV5_Ivan_Emmanuel_S

  • @fersymartinez9353
    @fersymartinez9353 6 ปีที่แล้ว +1

    No entiendo por qué refresca la variable mitad en cada ciclo, si cuando sale y se vuelve a ejecutar el while se refresca en la primera instrucción, es necesario refrescarlo en cada if?. Yo lo hice sólo modificando las variables sup e inf y me funciona bien.

    • @pankyv8537
      @pankyv8537 6 หลายเดือนก่อน

      igual lo pense

  • @miramontessanchezcarlos4360
    @miramontessanchezcarlos4360 4 ปีที่แล้ว +2

    Un poco mas complicado que el anterior pero entendible, buen vídeo. cecyt 14 "Luis Enrique Erro" Carlos M 4IV6

  • @comofuncionaelmundo3895
    @comofuncionaelmundo3895 6 ปีที่แล้ว

    La busqueda binaria es una busqueda que se da entre un conjunto de elementos ordenados en base a algun criterio, en donde se define una funcion que va subdividiendo la lista en dos mitades a cada paso hasta hallar el elemento buscado. Por eso es tan hermosa...

  • @israelgarcia6364
    @israelgarcia6364 4 ปีที่แล้ว

    /* El programa hecho por Alejandro tenia problemas para numeros que no
    pertenecen al vector.
    Abajo dejo una posible solucion a este problema.
    */
    #include
    #include
    using namespace std;
    int main(){
    int numeros[] = {1,2,3,4,5}; // es necesario que la cadena este ordenada
    int inf = -1,sup = 5,dato,mitad;
    char band = 'F';
    coutdato;
    //Algoritmo de la busqueda binaria;
    while((inf < sup-1) && (sup > inf+1)) {
    mitad = (inf+sup)/2;

    if(numeros[mitad] == dato){
    band = 'V';
    break;
    }
    if(numeros[mitad] > dato){
    sup = mitad;
    }
    if(numeros[mitad] < dato){
    inf = mitad;
    }
    }

    if(band == 'V'){
    cout

  • @CarlosIsmael
    @CarlosIsmael 7 ปีที่แล้ว +13

    No muestra el mensaje cuando el numero no está en el arreglo.

    • @Adolin.Kholin.
      @Adolin.Kholin. 6 ปีที่แล้ว +8

      Carlos Ismael cambia:
      While((inf+1)!=sup)

    • @pedroarcerojas7399
      @pedroarcerojas7399 6 ปีที่แล้ว

      gracias men igual ami no me salia ese mensaje ahora si

  • @agustinlyon8173
    @agustinlyon8173 4 ปีที่แล้ว

    //Busqueda Binaria
    #include
    #include
    using namespace std;
    int main(){
    int sizeA;
    int inf,sup,mitad,dato,i;
    int band=0;

    printf("INDIQUE EL TAMANO DEL ARREGLO:
    ");
    scanf("%d",&sizeA);
    int numeros[sizeA];

    //Ingreso elementos que conforman arreglo
    for (int i=0;i

  • @towerss1414
    @towerss1414 3 ปีที่แล้ว

    Hermano, hiciste que esto sonará mucha mas interesante

  • @ricardojoselunallanos283
    @ricardojoselunallanos283 7 ปีที่แล้ว +1

    Es super bueno tus videos se te agradece bastante,saludos cordiales.
    una consulta necesito hacer una busqueda recursiva en un arreglo pero hasta ahora no lo puedo terminar, agradeceria bastante tu ayuda.

  • @robinsomedina2186
    @robinsomedina2186 5 ปีที่แล้ว +5

    Amigo el algoritmo no funciona para numeros que no estén en el arreglo , yo personalmente lo arregle colocando un condicional extra
    if ( ( inferior == ( posicion final del arreglo) or inferior == ( posicion inicial del arreglo) ) and vector[ posicion ] != dato )
    break;
    lo probe y me funciona , me gustaria saber como seria tu logica para resolver ese problema.
    saludos .
    P.D.: Buen trabajo el que has hecho , gracias

    • @PokedecksTCGPocket
      @PokedecksTCGPocket 3 ปีที่แล้ว +1

      amigo mío yo creo que ya es muy tarde para dialogar sobre esto pero yo lo resolví mucho mas rápido, añadí al ciclo while la condición de que un itinerante sea menor al numero de elementos del arreglo y al final de siclo añadí un i++, así hice que cuando el ciclo recorriera todo el arreglo y no encontrase el dato terminara el ciclo.

    • @DIEGO.zzz1311
      @DIEGO.zzz1311 5 หลายเดือนก่อน

      @@PokedecksTCGPocket tu eres el que llego tarde wtf

    • @PokedecksTCGPocket
      @PokedecksTCGPocket 5 หลายเดือนก่อน

      @@DIEGO.zzz1311 lo dije por que murio el chico del video

  • @tlay666
    @tlay666 7 ปีที่แล้ว +1

    y si el num'ero que estoy buscando se encuentra 2 veces en el arreglo como muestro las 2 busquedas?

  • @robertodieguez9444
    @robertodieguez9444 8 ปีที่แล้ว +1

    Hola disculpa tengo varias dudas con esto. por que es necesario refrescar "mitad" en cada sentencia if en la busqueda binaria?.

    • @promipicode
      @promipicode 4 ปีที่แล้ว

      PASARON 3 AñOS PERO BUENO .
      Alejandro Reina
      Hace 1 segundo
      Para los que no entendieron bien la busqueda binaria primero cambien en su mente inf sup y mitad. solo piensen que son tres apuntadores o indices respectivamente. Bueno el apuntador 1 deberia ubicarse en la posicion 0 y el apuntador 2 en la ultima posicion . y el apuntador medio osea el 3 sale de la operacion ap1 + ap2 / 2 osea que si tenemos 5 elementos seria 5 + 0 / 2 ;
      bueno luego se pregunta si numeros ose ael arreglo en la posicion que esta el apuntador 3 que seria 5 / 2 seria 2,5 pero siempre se le hace un floor osea redondear hacia abajo osea 2 . y si no es igual al dato que estamos pidiendo pues pasa al siguiente if y se pregunta si numero[apuntador 3('el del medio') ] es mayor dato por eso es que siempre debe estar ordenado el arreglo y para algo aprendimos los ordenamientos, Bueno si es mayor lo que hace es que al apuntador 2 que estaba quieto le pasamos la posicion del apuntador 3 y entonces hacemos de nuevo la division esa. ap1 + ap / 2 y entonces gracias a esta division ubicamos el apuntador 3 . entonces el ap2 es para que cada vez se vaya reduciendo los numeros y luego el apuntador medio encuentre el valor . Siguiendo la explicacion pues repite el ciclo y se pregunta si ya encontro el valor . si no vuelve a hacer lo que explique hasta reducir ha los mas minimo y encontrar el valor. ENTONCES EL APUNTADOR 3 O MEDIO ES EL QUE NOS ENCUENTRA EL VALOR DEPENDIENDO DE LAS POSICIONES DEL 1 Y EL 2 ENTONCES CUANDO SE PREGUNTA SI ES MAYOR O MENOR HACE EL INTERCAMBIO DE LA POSICION QUE ESTA MEDIO A LA POSICION DEL APUNTADOR DOS O UNO DEPENDIENDO SI ES MAYOR O MENOR Y ASI VUELVE A HACE LA DIVISION COMO DIJE PARA REDUCIR LOS ELEMNTOS HASTA ENCONTRAR Y PONER LA BANDERA EN 'v' DND.
      POSTADATA: IMAGINENSE CUADRADITOS QUE SON LAS POSICIONES Y VAYAN HACIENDO LO QUE EXPLIQUE

    • @axellbernabel5550
      @axellbernabel5550 4 ปีที่แล้ว

      @@promipicode jajaja tremendo texto y no respondiste la pregunta. NO ES NECESARIO REFRESCAR MITAD listo.

  • @RonaldDriftP
    @RonaldDriftP 8 ปีที่แล้ว

    hola. mi pana como puedo hacer un programa basado en c++ donde funcione como hiperterminal trabajando con los puertos seriales de la PC, es posible???

  • @paolavergara6551
    @paolavergara6551 5 ปีที่แล้ว

    hola necesito saber como hacer pseudocodigos para principiantes del metodo de busqueda binaria

  • @santiagobarreiro7359
    @santiagobarreiro7359 8 ปีที่แล้ว +1

    tengo una pregunta estoy empezando a programar en c++ y quisiera saber como haces para que se vean esas lineas entre llave y llave

    •  8 ปีที่แล้ว

      Hola :) esas lineas son originarias del IDE que utilices, en este caso yo utilizo el Dev-C++ 5.5.3 :D Un saludo

    • @santiagobarreiro7359
      @santiagobarreiro7359 8 ปีที่แล้ว

      ProgramaciónATS en mi caso uso el 4.9 no recuerdo bien que mas ,en ese se pueden poner esas lineas??

  • @kylecry2502
    @kylecry2502 8 ปีที่แล้ว +3

    Muy bueno! soy muy seguidor de tus vídeos! :D saludos

    •  8 ปีที่แล้ว +6

      Muchas gracias por ver los vídeos y por el apoyo :D Un saludo desde Perú

    • @kylecry2502
      @kylecry2502 8 ปีที่แล้ว +4

      +Programación at snow hay de que! y es un gusto! :D saludos desde España

  • @imSekki
    @imSekki 5 ปีที่แล้ว

    puedo implementar esto en una estructura? por ejemplo buscar los numeros de empleados con esto?

  • @paolaosoroi4285
    @paolaosoroi4285 7 ปีที่แล้ว +2

    alejandro muy bn pero creo que faltaron 2 ejercicios por cada metodo de buqueda para entenderle mas no o practicar lo que aprendimos

  • @alextoledoz888
    @alextoledoz888 5 ปีที่แล้ว +2

    Bro, una pregunta el superior no debe de ser 4??

    • @martinrotelli6085
      @martinrotelli6085 5 ปีที่แล้ว

      Si deberia ser 4

    • @promipicode
      @promipicode 4 ปีที่แล้ว

      SI AUNQUE ES LO MISMO YA QUE IGUAL AL REDUCIR LOS ELEMENTOS NO IMPORTA YA QUE EL SUPERIOR SIRVE PARA UBICAR EL APUNTADOR MEDIO ARRIBA EXPLIQUE

  • @lysbbb
    @lysbbb 4 ปีที่แล้ว +1

    Me gusta como lo explica, Laura C. CECyT 14 4IV6

  • @atube1231
    @atube1231 7 ปีที่แล้ว +1

    Para tomar el curso en tu página el monto es en pesos, dólares o euros?

    •  7 ปีที่แล้ว

      Hola :) el precio es en dólares

  • @fernandofa2001
    @fernandofa2001 4 ปีที่แล้ว +2

    Descanse en paz, mentor :(

  • @alexlsr8624
    @alexlsr8624 2 ปีที่แล้ว

    Alguno sabe por qué declaro la variable mitad dentro del bucle while y no por fuera?

  • @luisebaq
    @luisebaq 7 ปีที่แล้ว +1

    Me ahorraste la pensadera, gracias.

    •  7 ปีที่แล้ว

      Gracias a ti por ver :) Un saludo desde Perú

    • @NN-mi8hv
      @NN-mi8hv 4 ปีที่แล้ว

      @ Un saludo podrias mandarme saludos desde el cielo gracias brother

    • @migueleduardofernandezsevi3538
      @migueleduardofernandezsevi3538 4 ปีที่แล้ว

      @@NN-mi8hv ???

  • @julianestefan4614
    @julianestefan4614 7 ปีที่แล้ว +1

    buenas!! la verdad muy buenos bideos me han servido mucho para amigarme con el lenguaje. Me surgio una pregunta respecto a las banderas no seria mejor usar una variable booleana para esos casos? al fin y al cabo estan para representar verdaderos y falsos. muchas gracias por todo. Saludos

    • @014scorpion
      @014scorpion 7 ปีที่แล้ว +2

      Efectivamente, es mejor usar variables de tipo bool (principalmente por cuestiones de memoria). Aunque en estos casos no afecta por la simplicidad del código, es un factor importante a considerar. Saludos.

  • @emanueltsyra1842
    @emanueltsyra1842 4 ปีที่แล้ว

    el bucle se corrige con un bucle for o restringiendo mas la condicion en el bucle while
    #include
    #include
    #include
    #include
    #include
    using namespace std;
    int main(){
    int arreglo[]= {1,2,3,4,5,6,7,8,9,10};
    int dato=81, inf=0, sup=10, mitad=0;
    char band= 'F';
    int i=0;
    while ( (inf

  • @VizZiO28
    @VizZiO28 4 ปีที่แล้ว

    cout

  • @alexhubert8141
    @alexhubert8141 6 ปีที่แล้ว +1

    #include
    using namespace std;
    int main() {
    int A[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int inf, med,sup, a;
    int dato = 4;
    char ban = 'f';
    inf = A[0];
    sup = A[9];
    for (int i = 0; i < 10; ++i) {
    a =i;
    med = (sup + inf)/2;
    if (dato == A[med] || dato == A[inf] || dato == A[sup]){
    ban = 'v';
    break;
    }else if (dato > A[med]){
    // el med+1 es por que como la condicion anterior comprobo que no es el del medio
    // entonces asignamos la siguiente.
    inf = med + 1;
    }else if (dato < A[med]){
    // igualmente el med-1 para ahorar iteraciones
    sup = med - 1;
    }
    }
    if (ban == 'v'){
    cout

  • @denissergiolizarazu619
    @denissergiolizarazu619 5 ปีที่แล้ว +1

    alguien sabe como implementar los 3 metodos de busqueda en uno con un menu ???

    • @piero6718
      @piero6718 4 หลายเดือนก่อน

      claro, generando un menu, donde le pedis a un usuario que ingrese una opcion 1 2 o 3 y segun las opciones correr el algoritmo

  • @maicoldf4939
    @maicoldf4939 8 ปีที่แล้ว

    Hola, En un problema tengo que hacer la busqueda de un vector pequeño dentro de una matriz, Has hecho algún video para realizar esta busqueda?

  • @axellbernabel5403
    @axellbernabel5403 4 ปีที่แล้ว +1

    La solucion es poner while(superior != inferior), lo dejo ahi por si alguien le interesa.

    • @diegoosorio3838
      @diegoosorio3838 4 ปีที่แล้ว

      Bro me puedes explicar por qué plss

    • @axellbernabel5403
      @axellbernabel5403 4 ปีที่แล้ว

      @@diegoosorio3838 cuando las posiciones son iguales en las busqueda binaria significa que el codigo ya cumplio su funcion, entonces ya debe dejar de ejecutarse

    • @buhosabio4337
      @buhosabio4337 4 ปีที่แล้ว

      Esa no es la solución, ya que el inferior siempre va a quedar por debajo del superior en una unidad, y por eso el programa cae en un ciclo infinito. Una solución sería poner lo siguiente: while (sup > inf + 1) {...}

  • @Churly25
    @Churly25 2 ปีที่แล้ว

    Yo hice un ejercicio completo de busqueda binaria. Tal vez me compliqué haciéndolo pero funciona. Aqui se los pongo:
    #include
    using namespace std;
    int main(){

    //Armar el arreglo

    int capacidad = 0;
    coutcapacidad; cout

  • @ricksanchezg7431
    @ricksanchezg7431 6 ปีที่แล้ว

    El algoritmo de la inserccion binaria como seria ?
    gracias de antemano

  • @anabelberumen
    @anabelberumen 2 ปีที่แล้ว

    Te quiero mucho ❤️

  • @juanaltamiranda477
    @juanaltamiranda477 6 ปีที่แล้ว

    Hola Alejandro y seguidores del curso
    Tengo un duda:
    if(numeros[mitad] == dato){
    band = 'V';
    break;
    }
    if(numeros[mitad] > dato){
    //¿porqué no debo omitir introducir estos dos if del código?
    sup = mitad;
    // para los casos que sea > a dato y para el caso que
    mitad = (inf+sup)/2;
    // sea < a dato?
    }
    // al omitirlos no imprime nada.
    if (numeros[mitad] < dato){
    // ¿estos dos if representan a else?
    inf = mitad;
    mitad = (inf+sup)/2;
    }

  • @gjjt3462
    @gjjt3462 6 ปีที่แล้ว

    Si el dato que buscamos está al final del arreglo y no hay otro igual a ese, lo encontraría?

  • @Victor-hb2hi
    @Victor-hb2hi 6 ปีที่แล้ว

    //Busqueda Binaria
    #include
    #include
    using namespace std;
    int main(){
    int numeros[] = {1,2,3,4,5};
    int inf,sup,mitad,dato,i;
    char band='F';

    dato = 4;

    //Algoritmo de la Busqueda Binaria
    inf = 0;
    sup = 5;
    for (int i=0; idato){
    sup = mitad;
    mitad = (inf+sup)/2;
    }
    if(numeros[mitad]

    • @jorgechungq.3828
      @jorgechungq.3828 5 ปีที่แล้ว

      disculpa pero probé tu código y me cuando pongo la opción 1 me aparece que no se encontró, podrías arreglarlo?

  • @Kazzoi1
    @Kazzoi1 7 ปีที่แล้ว +4

    una cosa curiosa que no pronuncias es que inferior es = 0, pero el cero se cuenta y superior =5 pero el 5 se cuenta, osease
    0,1,2,3,4,5 son 6 numeros!! y en la busqueda cuenta los 6 pero el vector solo tiene 0,1,2,3,4 solo tiene 5 numeros!!
    curioso !!

    • @martinrotelli6085
      @martinrotelli6085 5 ปีที่แล้ว

      El limite superior del arreglo en realidad es N-1 y en este caso N=5 asi que tendria que poner el 4 como limite superior.

    • @promipicode
      @promipicode 4 ปีที่แล้ว

      iGUAL FUNCIONA YA QUE SOLO SIRVE PARA REDUCIR DONDE SE ENCONTRARA EL APUNTADOR MEDIO

  • @JD_HC
    @JD_HC 7 ปีที่แล้ว +2

    amigo..un favor realiza un video sobre la busqueda A* por fAvor...

  • @LetyHumberto
    @LetyHumberto 7 ปีที่แล้ว

    Ycuando se buscan varios elementos en un arreglo bidimensional...???

  • @emanueltsyra1842
    @emanueltsyra1842 4 ปีที่แล้ว

    am>
    #include
    #include
    #include
    #include
    using namespace std;
    int main(){
    int arreglo[]= {1,2,3,4,5,6,7,8,9,10};
    int dato=15, inf=0, sup=10, mitad=0;
    char band='F';

    for ( int i=0 ; i dato){
    sup= mitad;
    }
    else if ( mitad

    • @felipealferez4461
      @felipealferez4461 4 ปีที่แล้ว

      Para tu caso si, pues haces 10 iteraciones estrictamente, pero ese metodo no siempre llegara a la respuesta.

  • @santimf
    @santimf 6 ปีที่แล้ว +1

    Solución definitiva:
    Viendo la solución en el video y leyendo y contrastando con los comentarios/rectificaciones del resto de usuarios, me atrevo a subir una solución explicada paso a paso para que se entienda.
    /*Video 54- || Búsquedas || Búsqueda BINARIA
    realizado por: S.M.F.
    */
    //Búsqueda Binaria: Se utiliza cuando el vector en el que queremos
    //determinar la existencia de un elemento está previamente ordenado.
    //Este algoritmo reduce el tiempo de búsqueda considerablemente,
    //ya que disminuye exponencialmente el número de iteraciones necesarias.
    //definición:Compara el valor con el elemento en el medio del array, si no son iguales,
    //la mitad en la cual el valor no puede estar es eliminada y la búsqueda continúa
    //en la mitad restante hasta que el valor se encuentre.
    #include
    #include
    using namespace std;
    //nota: necesitamos que esté ordenado en orden ascendente

  • @alexandervazquez4410
    @alexandervazquez4410 3 ปีที่แล้ว +1

    *El metodo mas eficiente a mi parecer es el siguiente:*
    //Busqueda binaria
    #include
    #include
    using namespace std;
    int main(){

    int numero[]={1,2,3,4,5,6,7,8,9};
    int inf,sup,mitad,dato,n=0;
    char band='f';

    coutdato;

    inf=0;
    sup=8;

    while(sup>=inf){
    mitad= (inf+sup)/2;

    if (numero[mitad]==dato){

    band='t';
    break;
    }

    if (numero[mitad]>dato){

    sup=mitad-1;
    }
    if(numero[mitad]

  • @emersonhernandez1240
    @emersonhernandez1240 8 ปีที่แล้ว

    Disculpa se que no viene al tema pero fijate que tengo que hacer un simulación de un cajero automatico en C# no se si has trabajado en este lengua sera que me podrias apoyar...

    • @Adolin.Kholin.
      @Adolin.Kholin. 6 ปีที่แล้ว

      Emerson Hernandez hace mucho que se trato ese ejercicio.

  • @andree6237
    @andree6237 5 ปีที่แล้ว

    Ayuda, si el dato=array[0], no me lo encuentra

    • @fezk3573
      @fezk3573 4 ปีที่แล้ว

      por imbecil

  • @brendahernandez1288
    @brendahernandez1288 4 ปีที่แล้ว +1

    CECyT #14.
    4iv6.
    Brenda Hernández.
    Sigo pensando que él explicaba genial.

  • @ddddd84179
    @ddddd84179 4 ปีที่แล้ว

    Cuando se prueba con un numero que no esta en el array no sale nada

    • @agustinlyon8173
      @agustinlyon8173 4 ปีที่แล้ว

      Puedes añadir un if en ese caso. Y que imprima un mensaje que diga numero tal no ha sido encontrado-

  • @chicadelongbottom5797
    @chicadelongbottom5797 5 หลายเดือนก่อน

    me salvo este video

  • @usuarioanonimo577
    @usuarioanonimo577 6 ปีที่แล้ว

    Disculpe compa podría explicar el código como el vídeo anterior
    RT...

    • @promipicode
      @promipicode 4 ปีที่แล้ว

      Alejandro Reina
      Hace 1 segundo
      Para los que no entendieron bien la busqueda binaria primero cambien en su mente inf sup y mitad. solo piensen que son tres apuntadores o indices respectivamente. Bueno el apuntador 1 deberia ubicarse en la posicion 0 y el apuntador 2 en la ultima posicion . y el apuntador medio osea el 3 sale de la operacion ap1 + ap2 / 2 osea que si tenemos 5 elementos seria 5 + 0 / 2 ;
      bueno luego se pregunta si numeros ose ael arreglo en la posicion que esta el apuntador 3 que seria 5 / 2 seria 2,5 pero siempre se le hace un floor osea redondear hacia abajo osea 2 . y si no es igual al dato que estamos pidiendo pues pasa al siguiente if y se pregunta si numero[apuntador 3('el del medio') ] es mayor dato por eso es que siempre debe estar ordenado el arreglo y para algo aprendimos los ordenamientos, Bueno si es mayor lo que hace es que al apuntador 2 que estaba quieto le pasamos la posicion del apuntador 3 y entonces hacemos de nuevo la division esa. ap1 + ap / 2 y entonces gracias a esta division ubicamos el apuntador 3 . entonces el ap2 es para que cada vez se vaya reduciendo los numeros y luego el apuntador medio encuentre el valor . Siguiendo la explicacion pues repite el ciclo y se pregunta si ya encontro el valor . si no vuelve a hacer lo que explique hasta reducir ha los mas minimo y encontrar el valor. ENTONCES EL APUNTADOR 3 O MEDIO ES EL QUE NOS ENCUENTRA EL VALOR DEPENDIENDO DE LAS POSICIONES DEL 1 Y EL 2 ENTONCES CUANDO SE PREGUNTA SI ES MAYOR O MENOR HACE EL INTERCAMBIO DE LA POSICION QUE ESTA MEDIO A LA POSICION DEL APUNTADOR DOS O UNO DEPENDIENDO SI ES MAYOR O MENOR Y ASI VUELVE A HACE LA DIVISION COMO DIJE PARA REDUCIR LOS ELEMNTOS HASTA ENCONTRAR Y PONER LA BANDERA EN 'v' DND.
      POSTADATA: IMAGINENSE CUADRADITOS QUE SON LAS POSICIONES Y VAYAN HACIENDO LO QUE EXPLIQUE

  • @mendozamunozarelifernanda6025
    @mendozamunozarelifernanda6025 4 ปีที่แล้ว

    Estuvo mas dificil que el anterior tema ,Cecyt 14 Luis Enrique Erro, Areli Mendoza, 4iv5

  • @digimikeh
    @digimikeh 6 ปีที่แล้ว

    Entonces la búsqueda binaria es ideal para arreglos demasiado largos..
    Metodo burbuja + búsqueda binaria.

    • @estebanxelhuantzi
      @estebanxelhuantzi 5 ปีที่แล้ว

      No uses el metodo burbuja para ordenar, es demasiado lento

  • @anakareninecamachoalvarado3607
    @anakareninecamachoalvarado3607 ปีที่แล้ว

    Te amo 4ever chavo de progra

  • @jeffrey3024
    @jeffrey3024 5 ปีที่แล้ว

    Lo que no entendí es porque refresca mitad, si debajo del while lo vuelve a ejecutar 🤔

    • @cristhianelvisvelasquezven3726
      @cristhianelvisvelasquezven3726 5 ปีที่แล้ว

      Eso está por demás. No es necesario refrescar, como dices se refrescará automaticamente al entrar al while

  • @memitoelpro
    @memitoelpro 7 ปีที่แล้ว +3

    Una duda, pero al principio, mitad = (0+5)/2 = 2.5, pero no existe la posición 2.5, ¿Cómo es eso?

    • @elvistirado3018
      @elvistirado3018 7 ปีที่แล้ว +2

      Es que lo declaro como int (entero)

    • @memitoelpro
      @memitoelpro 7 ปีที่แล้ว

      Jeff The Killer Ah, gracias.

    • @lucasreinaga2373
      @lucasreinaga2373 6 ปีที่แล้ว

      seria 3 o 2 en ese caso?¿

    • @FranciscojavierHDD
      @FranciscojavierHDD 6 ปีที่แล้ว +3

      @@lucasreinaga2373 se queda en 2, por que simplemente no toma en cuenta los decimales, ignora todo lo que viene después del punto.

  • @Foredres
    @Foredres 6 ปีที่แล้ว

    Lo aprenderé, aunque viendo el algoritmo entre secuencial y binaria, notó muchísimo mejor la secuencial, al final suelo copiar el contenido de un array a otra y ordenarla, ahí podría probar la binaria.

  • @hectorhirammirandaflores661
    @hectorhirammirandaflores661 6 ปีที่แล้ว +1

    Aquí mi código para que funcione incluso cuando añades un dato que no está dentro del arreglo.
    #include
    #include
    using namespace std;
    int main(){
    int numeros[]={1,2,3,4,5};
    int inf,sup,mitad,dato,contador = 0;
    char band = 'F';
    inf = 0;
    sup = 5;
    cout > dato;
    for(int i=0;i

  •  3 ปีที่แล้ว +2

    Buenas! El vídeo esta muy bien, tiene una falla, y es que si el arreglo tiene un salto de numero, o un numero en el medio NO está. FALLA.
    Les dejo un vídeo con con un algoritmo similar de búsqueda binaria , pero que contempla cuando al arreglo le falta un numero, o no son numero consecutivos.
    th-cam.com/video/6jfQ3AGACcM/w-d-xo.html

    • @andresgallardo5225
      @andresgallardo5225 3 ปีที่แล้ว

      compa, ale murio hace meses

    •  3 ปีที่แล้ว

      @@andresgallardo5225 si, al momento de mi comentario no sabía. :(

  • @moisesatenciaroman2840
    @moisesatenciaroman2840 4 ปีที่แล้ว

    Descansa en paz crack

  • @le14am
    @le14am 4 ปีที่แล้ว +1

    El siguiente programa resuelve los problemas de búsquedas fuera del rango (mayor que sup y menor que inf) y datos intermedios que no están en el arreglo:
    #include
    #include
    using namespace std;
    int main()
    {
    int numeros[] = { 2, 4, 6, 7, 9 };
    int inf, sup, mitad, dato, pos; // La variable pos es la posición en el arreglo.
    char band = 'F';
    dato = 9; // El número a buscar.
    inf = 2;
    sup = 9;
    if ((dato > sup) || (dato < inf)) {
    cout

    • @wall-edc2480
      @wall-edc2480 2 ปีที่แล้ว

      eso sería como una mezcla con la búsqueda secuencial :D

    • @wall-edc2480
      @wall-edc2480 2 ปีที่แล้ว

      eso sería como una mezcla con la búsqueda secuencial :D

  • @paredesgamboacarloseduardo3569
    @paredesgamboacarloseduardo3569 4 ปีที่แล้ว

    Cecyt 14 Carlos Paredes 4iv5 entendi muy bien el ejmplo

  • @434emm
    @434emm 4 ปีที่แล้ว +1

    cuando el número no está en el arreglo se cuelga el programa XD se queda en un bucle infinito

    • @enzoleonellaurasurco8433
      @enzoleonellaurasurco8433 4 ปีที่แล้ว

      Encontre la solucion para ello, mira lo arregle con un if else :
      //Busqueda Binaria
      #include
      #include
      using namespace std;
      int main()
      {
      int numeros[] = {1,2,3,4,5};
      int inf, sup, mitad, dato;
      coutdato;
      if(dato >= 1 && dato dato)
      {
      sup = mitad;
      mitad = (inf + sup) / 2;
      }
      if(numeros[mitad] < dato)
      {
      inf = mitad;
      mitad = (inf + sup) / 2;
      }
      }

      if(igual)
      cout

  • @garciagardunojesus3888
    @garciagardunojesus3888 4 ปีที่แล้ว

    El orden binario es mas complejo
    CECyT_14_4IV6_Jesús_García

  • @mendozaresendizcarlosdavid5186
    @mendozaresendizcarlosdavid5186 4 ปีที่แล้ว

    Buen video,cecyt 14,4IV6,Carlos Mendoza

  • @jessicaalvarez16
    @jessicaalvarez16 4 ปีที่แล้ว

    Buen video
    Cecyt 14,4IV6, Jessica Álvarez

  • @arico026
    @arico026 7 ปีที่แล้ว

    si haces un tutorial en C#?

  • @cristopheracevedo9966
    @cristopheracevedo9966 4 ปีที่แล้ว +2

    if((numeros[mitad]==sup)&&(numeros[mitad]

  • @sg9229
    @sg9229 6 ปีที่แล้ว

    No entendí el algoritmo de la busqueda Binaria 😓

    • @cristhianelvisvelasquezven3726
      @cristhianelvisvelasquezven3726 5 ปีที่แล้ว +1

      Sandy G Primero se ordena el arreglo. Luego se busca por intervalos.

    • @pieropilcoreynoso3205
      @pieropilcoreynoso3205 5 ปีที่แล้ว

      cristhian elvis velasquez ventura cvre, con el método de la burbuja antes, y también en random

  • @mishabytes8209
    @mishabytes8209 7 ปีที่แล้ว

    me dijeron que habia , busqueda secuencial, busqueda binaria y busqueda recursiva

  • @orlandoflorescustodio.6894
    @orlandoflorescustodio.6894 ปีที่แล้ว

    asi rompes el ciclo
    #include
    #include
    #include
    #include
    using namespace std;
    int main(){
    int numero []= {0,1,2,3,4,5,6,7,8,9};
    int inferior, superior, mitad, dato, conteo;
    char bandera = 'F';
    dato = 16;
    //algoritmo
    inferior = 0;
    superior = 10;
    conteo = inferior;
    while (inferior dato){
    superior = mitad;
    mitad = (inferior + superior)/2;
    }
    if (numero[mitad] < dato){
    inferior = mitad;
    mitad = (inferior + superior)/2;
    }
    if(conteo == superior){
    break;
    }
    conteo = conteo + 1;
    }
    if (bandera == 'V'){
    cout