Está en la página 1de 4

/*El programa ordena por algoritmo de inserción um arreglo numérico*/

#include <iostream>

#include <cstring>

using namespace std;

void imp(int [], int);

void ordenarI(int [], int);

int buscaBinaria(int, int [], int);

int main()

const int t=8;

int nums[t]={6, 2, 1, 3, 5, 4, 7, 8};

int n=1, pos;

//Tenemos un arreglo de números

imp(nums, t);

//lo ordenamos en ascendente

ordenarI(nums, t);

//lo imprimimos para verlo

imp(nums, t);

cout<<"Un num: ";

cin>>n;

//buscamos el número

pos = buscaBinaria(n, nums, t);

if( pos != -1 )
cout<<"El num "<<n<<" se encuentra en pos="<<pos<<".";

else

cout<<"Ese número no se encuentra";

//cout<<"pos="<<pos;

return 0;

int buscaBinaria(int n, int nums[], int t){

bool flag=false;

int inf=0, mitad, sup=t;

//mi modif

if( n>=nums[inf] && n<=nums[sup-1] ){

//modificación mía

if( n==nums[inf] )

return inf;

else if( n==nums[sup-1] )

return (sup-1);

while( inf <= sup ){

mitad=(sup+inf)/2;

if( n == nums[mitad] ){

flag=true;

break;

if( n>nums[mitad] )
inf = mitad;

if( n<nums[mitad] )

sup = mitad;

if( flag )

return mitad;

else

return -1;

void ordenarI(int nums[], int t){

int menor, pos;

for(int i=0; i<t; i++){

//asumimos que la posición 0 es el menor

pos=i;

//buscamos la posición del menor en el resto del arreglo

for(int j=i+1; j<t; j++)

//si el num actual es menor que el que asumimos menor

if( nums[j]<nums[pos] ){

//guardamos la nueva posición

pos=j;

//intercambiamos los valores

if( pos!=i ){
menor=nums[pos];

nums[pos]=nums[i];

nums[i]=menor;

void imp(int nums[], int t){

for(int i=0; i<t; i++)

cout<<nums[i]<<" ";

cout<<endl;

También podría gustarte