Búsqueda Binaria y
Programas
María José Gardea Acosta 150738
Pablo Andrés Pavón Morato 152933
Ana Hernández Montiel 150286
BUSQUEDA BINARIA
La búsqueda binaria es un algoritmo eficiente que busca en una lista
ordenada un elemento deseado.
La búsqueda binaria funciona reduciendo a la mitad el número de
elementos que se deben examinar y afinando el valor deseado. La
búsqueda binaria puede determinar si un elemento existe y dónde
existe en una lista, o determinar si no está en la lista.
La búsqueda binaria funciona comparando el valor objetivo con
el elemento medio de la matriz. Si el valor objetivo es mayor
que el elemento medio, la mitad izquierda de la lista se elimina
del espacio de búsqueda y la búsqueda continúa en la mitad
derecha. Si el valor objetivo es menor que el valor medio, la
mitad derecha se elimina del espacio de búsqueda y la
búsqueda continúa en la mitad izquierda.
Este proceso se repite hasta que el elemento medio sea igual al
valor objetivo, o si el algoritmo devuelve que el elemento no
está en absoluto en la lista.
Si se quiere buscar el 10 en el siguiente arreglo:
3 5 10 15 21 50 100 1564 1565 100000
Paso 1: La búsqueda binaria busca la mitad:
3 5 10 15 21 50 100 1564 1565 100000
E Si es el resultado devuelve su posición, en otro caso busca de qué lado está el valor, y desecha la mitad del
j arreglo
e Paso 2: busca la mitad.
m 3 5 10 15
p
Si es el resultado devuelve su posición, en otro caso busca de qué lado está el valor, y desecha la mitad del
l arreglo
o Paso 3: busca la mitad.
10 15
Como se encontró el resultado, se regresa su posición que es la 3.
#include<stdio.h> if (A[mit]>dato)
int main() {
{ sup=mit;
int A[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; mit=(inf+sup)/2;
int inf,sup,mit,dato,n=20; }
printf("dame un dato a buscarn"; if (A[mit]<dato)
scanf("%d",&dato); {
inf=0; inf=mit;
sup=n; mit=(inf+sup)/2;
while (inf<=sup) }
{
mit=(inf+sup)/2; }
if (A[mit]==dato) return 0;
{ }
printf("dato %d encontrado posicion %d",dato,mit);
break;
}
Código 1 void draw () { desplazamientoX =-1;
if (mouseX<width/2)
{ // moviendo el
background (255); desplazamientoY =-1; mouse la bolita
float posX;
cmabia de color.
noStroke();//sin filos a la forma }
float posY; geometrica
fill(0, 255, 0)}
else if (posX < 0){ //movimiento
float desplazamientoY; //fill(0,0,255); //color al ellipse en X if (mouseX>width/2)
{
float desplazamientoX; ellipse( posX, posY, posX =0;
100,100); // forma del elipse
fill(0, 0, 255);
void setup () { desplazamientoX=1;
if (posY < 0){
size (300,300); }
posY =0;
}
posX= width/1; else if (posX > height){
desplazamientoY=1; if (mouseY<width/2) {
posY= height/3; posX =height;
} fill(0, 255, 235);
desplazamientoY = 1; desplazamientoX =-1;
else if (posY > height){ //
desplazamientoX = 1; }
movimiento en Y
}
}
posY =height;
if (mouseY<width/2) {
Código 2
void draw() {
void move(){
background(0);
xpos=xpos+i;
if(xpos>width||xpos<0){
for(i=1;i<40;i++){ class Copo{
Copo[] copo=new Copo[40]; i=i*-1;}}
copo[i].move(); color c;
Nave nave1;
copo[i].show(); float xpos;
int i; void show(){
[Link](); stroke(0); float ypos;
void setup(){
[Link]();}} float speed;
size(500,500); fill(#76766E);
nave1= new Nave(250,400); beginShape();
class Nave{
for(i=0;i<40;i++){ vertex(xpos,ypos);
float xpos;
copo[i] = new vertex(xpos+40,ypos+30);
float ypos; vertex(xpos,ypos-50);
Copo(color(#F7EC0C),random(0,wi
float i=.1;
dth),0,random(0,10)); vertex(xpos-40,ypos+30);
Nave(float tempxpos,float
}} endShape(CLOSE);
tempypos){
}}
xpos=tempxpos;
ypos=tempypos;
}
Copo(color tempC,float
void show(){
tempxpos,float tempypos,float
stroke(0);
tempspeed){
fill(c);
c=tempC;
beginShape();
xpos=tempxpos;
vertex(xpos,ypos);
ypos=tempypos;
vertex(xpos+10,ypos-20);
speed=tempspeed;}
vertex(xpos+20,ypos);
vertex(xpos,ypos-15);
void move(){
vertex(xpos+20,ypos-15);
ypos=ypos+speed;
endShape(CLOSE);
if(ypos>height){
}}
ypos=0;}}
void draw(){ void move(){
background(255); xpos=xpos+i;
Código 3 imageMode(CORNERS); if(xpos>width||xpos<0){
image(foto, 0,0,width,height); i=i*-1;}
Ant[] ant = new Ant[100]; for(i=0;i<100;i++){ ypos=ypos+j;
PImage foto; ant[i].move(); if(ypos>height||ypos<0){
int i; ant[i].show();}} j=j*-1;}
void setup(){ }
size(700,700); class Ant{
foto = loadImage("[Link]"); float xpos; void show(){
for(int i=0;i<100;i++){ float ypos; stroke(0);
ant[i] = new float i; strokeWeight(1);
Ant(random(0,width),random(0,heig float j; fill(0);
ht),random(0,10),random(0,10)); Ant(float tempxpos,float ellipse(xpos,ypos,20,20);
tempypos, float tempi, float tempj){ ellipse(xpos-15,ypos,20,20);
} fill(255);
xpos=tempxpos;
ellipse(xpos+10,ypos-5,10,10);
ypos=tempypos;
} ellipse(xpos+10,ypos+5,10,10);
i=tempi;
fill(0);
j=tempj;
ellipse(xpos+10,ypos-5,2,2);
}
ellipse(xpos+10,ypos+5,2,2);
}}
SERIE FIBONACCI
La sucesión de Fibonacci, en ocasiones también conocida como
secuencia de Fibonacci o incorrectamente como serie de Fibonacci,
es en sí una sucesión matemática infinita. Consta de una serie de
números naturales que se suman de a 2, a partir de 0 y 1.
Básicamente, la sucesión de Fibonacci se realiza sumando siempre
los últimos 2 números (Todos los números presentes en la sucesión
se llaman números de Fibonacci)
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597…
Serie Fibonacci
Cierto hombre tiene una pareja de conejos juntos en un lugar
cerrado y desea saber cuántos son creados a partir de este par en un
año cuando, de acuerdo a su naturaleza, cada pareja necesita un mes
para envejecer y cada mes posterior procrea otra pareja
Código en C- Serie Fibonacci
#include <stdio.h>
int main()
printf("%d", sig);
{
}
int n, primero = 0, segundo= 1, sig, c;
return 0;
printf("Cantidad de números de la serie:\n", n);
}
scanf("%d", &n);
printf("Serie:\n", n);
for (c = 0; c < n; c++)
{
if (c <= 1)
sig= c;
else
{
sig = primero + segundo;
primero= segundo;
segundo = sig;
}
Fibonacci en Processing