Вы находитесь на странице: 1из 23

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA

CLASE 05
ORDENACION Y BUSQUEDA

CONTENIDO
INTRODUCCION
METODOS DE ORDENAMIENTO
METODO DE LA BURBUJA
METODO DE SHELL
METODO QUICK SORT O ORDENACION RAPIDA
ORDENAMIENTO POR INSERCION
ORDENAMIENTO POR SELECCIÓN DEL MENOR
ORDENAMIENTO POR SELECCIÓN DEL MAYOR
METODOS DE BUSQUEDA
BUSQUEDA SECUENCIAL
BUSQUEDA BINARIA
BUSQUEDA BINARIA RECURSIVA
APLICACIONES . EJEMPLOS

INTRODUCCION A ORDENAMIENTO Y BUSQUEDA


La ordenacion y busqueda son operaciones muy importantes en estructura de
datos y en la informáticos.

El ordenamiento se refiere a la operación de organizar lo datos bajo un criterio de


orden, dependiendo si los datos son numericos, se puede tener aordenamiento:
- ascendente
- descendente
si los datos son de tipo carácter o alfabetico, entonces el ordenamiento es
alfabetico. Desde A a Z.

La Busqueda se refiere a la operación de encontrar una posición determinada


Puede ser:
- Busqueda por una posición determinada.
- Busqueda por un valor dado.

Si los elementos del arreglo se encuentran en memoria principal, el metodo se


denomina ordenacion interna.

Si los elementos del arreglo se encuentran en almacenamiento secundario, el


metodo se denomina ordenacion externa.

La diferencia entre ambos métodos es que la ordenacion interna puede permitir el


acceso directo, mientras que en almacenamiento secundario el acceso es
secuencial.
Definicion

Sea una secuencia de n elementos: A1, A2, …, An, en memoria, ordenar a se refiere
a ordenar los contenidos del arreglo A de forma que se tenga

Ejemplo ordenados en orden creciente:


A1 < = A2<=A3<= . . . <= An
Todos los métodos de ordenamiento se basan en un procedimiento de
Intercambio:

Este metodo consiste en cambiar los valores de A por B y viceversa, esto se logra
utilizando una variable temporal del mismo tipo de datos que contenga
momentaneamente el valor de uno para pasarlo al otro.

Acción intercambio(x, y, temp)


Inicio
temp = x
X = y
Y = temp
Fin

Ejemplo
Sean dos numeros X y Y
El menor debe estar en X y el mayor en Y. Si no es asi hacer el intercambio
Sean X= 14, Y =12
inicio
Entero x, y, temp
Leer x , y
escribir x
escribir y
// Intercambio
If( x > y )
temp = x
x =y
y = temp
fin si
Escribir “ el valor de X es:” x
Escribir “ el valor de Y es:” y
fin
METODOS DE ORDENAMIENTO:

METODO DE LA BURBUJA (BOUBBLE SORT)


Este metodo de ordenamiento o clasificación de los datos en el arreglo
unidimensional es permitir o hacer flotar o burbujear los datos, es decir los de
menor peso van a la superficie, para lo cual realiza una comparación del primer
elemento base de arreglo unidimensional (numeros superiores) con su vecino
inmediato ( olemento referencial.
Si el elemento base resulta menor o igual al elemento de referencia pasa a ser el
nuevo elemento baser y su vecino inmediato al nuevo elemento de rerefrencia.
Si el elemento base es mayor que el numero de referncia , se intercambian valores
es decir la posición del elemento base toma el valor del elemento referencia y
vicweversa.
Este proceso se repite hasta la ordenación completa del arreglo

En siguiente se observa como se procede a realizar el ordenamiento por el metodo


de la burbuja.

Ejemplo: Sea el arreglo M(I) Realizar el Ordenamiento ascendente por el Metodo


de la Burbuja

60 42 83 25 75
1 2 3 4 5

Paso 1.

60 42 83 25 75
1 2 3 4 5

1. Comparar las posiciones 1 y 2 del Arreglo, Si el valor de la posición 1 es mayor


que la posición 2, Intercambiar los valores y el resultado del intercambio es:

42 60 83 25 75
1 2 3 4 5

2. Comparar las posiciones 3 y 4 del Arreglo, Si el valor de la posición 3 es mayor


que la posición 4, Intercambiar los valores y el resultado del intercambio es

42 60 25 83 75
1 2 3 4 5

3. Comparar las posiciones 4 y 5 del Arreglo, Si el valor de la posición 4 es mayor


que la posición 5, Intercambiar los valores y el resultado del intercambio es:

42 60 25 75 83
1 2 3 4 5

Findel Paso 1
Paso 2.

42 60 25 75 83
1 2 3 4 5

1. Comparar las posiciones 2 y 3 del Arreglo, Si el valor de la posición 2 es mayor


que la posición 3, Intercambiar los valores y el resultado del intercambio es:

42 25 60 75 83
1 2 3 4 5

Findel Paso 2

Paso 3.

42 25 60 75 83
1 2 3 4 5

1. Comparar las posiciones 1 y 2 del Arreglo, Si el valor de la posición 1 es mayor


que la posición 2, Intercambiar los valores y el resultado del intercambio es:

25 42 60 75 83
1 2 3 4 5

Findel Paso 3

Finalmente el Arreglo queda ordenado:

25 42 60 75 83
1 2 3 4 5

ACCION METODO DE LA BURBUJA

Accion Burbuja(entero v, entero n)


Inicio
Para i desde 1 hasta n – 1
Para j desde 1 hasta n-i
Si (v  j > vj+1)
Aux = vj
vj = vj+1
v j+1 = aux
Fin si
Fin Para
Fin Para
Fin

CODIFICACION DEL METODO DE LA BURBUJA

Void ordenacion:: Buebuja(int v ( ), int n))



Int aux
for (int i = 1; i< =n-1; i++)

For(int j= 1; j<=n-i; j++)

if (v  i ( ) > v  j +1)

Aux = v j;
v j = v j+1;
v j+1= aux



Ejemplo: Realizar mediante funciones la creación o carga o


almacenamiento de un arreglo unidimensional y el ordenamiento
mediante el método de la Burbuja Muestra los elementos de la matriz.

 include <iostream.h>
 include <conio.h >
const int MIN = 2;
const int MAX = 10;

// Pide cantidad de elementos


int getNumPoints(int low, int high)

int numPoints;
do

cout<<”Ingrese numero de datos  “
<< low << “ a “ <<
high << “ : “;
cin>>numPoints;
 while (numPoints <low || numPoints >high);
return numPoints;

// Carga los elementos del arreglo
void inputArray(int int Arr  , int num)

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

cout<<” array “ <<i << “ : “;
cin>>intArri ;


// Mostrar el Arreglo
void showArray(int int Arr  , int num)

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

cout. width (5);
cout<< intArr  i  << “ “;

cout<<endl;

void bubble Sort(int Arr  , int num)

for(int j =1; i< num; i ++)
for(int j =0; i < = i; j++)
if(intArr i  < int Arr j 

int temp = intArr i  ;
int Arr i  = intArr j  ;
intArr j  = temp;

int main ( )

int arr MAX ;
int num_elem;

num_elem = getNumPoints(MIN, MAX);


inputArray (arr, num_elem);
cout<<” Arreglo No ordenado es : “ <<endl;
showArray(arr, num_elem);
bubbleSort(arr, num_elem);
cout<<” Arreglo Ordenado es : “ <<endl;
showArray(arr, num_elem);
return 0;
getch( );

Prueba del programa:
Ingrese el numero de datos del arreglo 2 a 10 : 10
array 0  : 55
array 1  : 68
array 2  : 74
array 3  : 15
array 4  : 28
array 5  : 23
array 6  : 69
array 7  : 95
array 8  : 22
array 9  : 33

El Arreglo no Ordenado es:


55 68 74 15 28 23 69 95 22 33

El Arreglo Ordenado es:


15 22 23 28 33 55 68 69 74 95

METODO DE SHELL (SHELL SORT)


Método inventado por Donald Shell. Consiste en dividir un arreglo unidimensional
en dos partes, luego se compara cada grupo por separado y si no esta ordenado se
intercambian los valores. Este método es rapido y corto.

Este metodo divide el vector n div 2 es divide en 2elementos ordenados


separadamente, divide luego el vector en (n div 4) es decir divide en 4 grpos de
elementos y asi sucesivamente. Es eficaz cuando los elementos del vector estan
casi prdenados.

Acciòn SHELL SORT(entero a, entero n , carácter modo)


Inicio
entero a i
entero n
carácter modo
entero dist
entero i, j
boleano flag
modo = Si ingreso A o D en minuscula pasar a mayuscula)
Si (modo en ”A”,”D”)  (n en 1, lsup )
div = n/2
Mientras (dist>0)
i=1
Hacer flag = Verdad
j= i
Mientras ((i > 0) y flag)
Por casos(modo)
Inicio
“A” : Si a j > a(j +dist
Intercambio ( a j, aj+ dist)
j = j – dist
sino
flag = Falso
Fin si

“D” : Si a (j < aj+dist)


Intercambio ( a j, aj +dist)
j = j – dist
sino
flag = Falso
Fin si
Fin Por casos
Fin de Mientras // intercambios y ordenacion por grupos
i=j+1
Hasta que (i + dist > n) fin de barrido
dist = dist / 2
fin de ordenaieto
Finsi
Fin de ordenamiento Metodo de Shell

METODO QUICK SORT O ORDENACION RAPIDA


El metodo de ordenación rapida o método Quick Sort, inventado por Hoare, es un
método mas eficiente que los metodos de Bueurbuja y el de Shell.

Este metodo se basa en la estrategia “Divide y vencerás” (o Divide and conquer)


El metodo consiste en dividir el arreglo original en dos subarreglos y luego
ordenarlas por separado.

El arreglo original que se ha de ordenar se almacena en un vector, que luego se


divide en dos partes, donde uno esta conformado por los valores menores o iguales
a un cierto valor y el otro vector conformado por todos los valores mayores que el
valor.
El valor puede ser un valor arbitrario, pero para el caso de este metodod de
ordenacion rapida a este valor lo denominamos “pivot”

Pasos para seguir en este método:

1.- dividir el arreglo original en dos subarreglos y dar un valor de saparacion


asi el arreglo se divide en 3 partes:
a) subarreglo izquierdo vi , que contiene los valores menores que el valor de
saparacion dado
b) elemento de separación o pivot
c) subarreglo de la derecha vd , que contiene los valores mayores o iguales al
elemento de separación.
Ejemplo: Sea el siguiente arreglo no ordenado, ordenar en orden ascendente por
Metodo de ordenación rapida o quick sort.

18 11 27 13 9 4 11
1 2 3 4 5 6 7


1. En este arreglo primero elegimos el elemento de separacion o pivot como
13.

2. Se recorren los elementos del arreglo por el extremo izquierdo buscando


los mayores que 13. (El primer elemento encontrado mayor que 13 es 18.
3. Luego por el extrmo derecho se buscan los menores que 13, y se encuentra
al numero 4
4. Estos 2 valores 18 y 4 se intercambian en el arreglo y el arreglo despues
resulta asì:

4 11 27 13 9 18 16
1 2 3 4 5 6 7

1. Nuevamente se recorren los elementos del arreglo por el extremo izquierdo


buscando los mayores que 13. (El elemento encontrado mayor que 13 es 27.
2. Luego por el extremo derecho se buscan los menores que 13, y se
encuentra al numero 9
3. Estos 2 valores27 y 9 se intercambian en el arreglo y el arreglo despues
resulta asì:

4 11 9 13 27 18 16
1 2 3 4 5 6 7

1. Se recorren los elementos del arreglo por el extrmo izquierdo buscando los
mayores que 13.
2. En el arreglo por el extremo izquierdo ya no hay valores mayores que 13
3. De igual formando recorriendo el arreglo por el extrmo derecho ya no
encontramos valores menores que 13.

Luego el arreglo queda dividido en dos subarreglos:


Menores que 13

4 11 9
1 2 3

Y
Mayores que 13

27 18 16
5 6 7

Luego queda por ordenar cada uno de estos subarreglos


Aplicando el mismo metodo

En el Primer subarreglo
El ordenamiento es compara el segundo con el tercero e intercambiar
valores y este subarrego se ordena asi:

4 9 11
1 2 3

En el segundo subarreglo aplicando el mismo metodo


18 como pivot.

Por el extremo izquierdo buscar los mayores que 18 es 27 y por extremo


derecho los menores que 18 es 16.
Intercambiando estos dos valores el subarreglo se ordena asi:

16 18 27
5 6 7

Luego se unen el primer arreglo, el pivot y el segundo subarreglo


Y resulta el arreglo ordenado:

4 9 11 13 16 18 27
1 2 3 4 5 6 7

Codificación en Lenguaje de programación C++


El Metodo Quick Sort:

Void ordenación::Quick Sort (int v, int n)



Orden(v, 1, n)

Void ordenación::Orden (int v( ), int Izq, int Der)



int i, j;
int pivot, aux
if(Izq < Der)

i = Izq;
j= Der+1;
pivot = v(Izq + Der)/2;
do

do

i++;
while (v i < pivot);
do

j- - ;
while (v j > pivot);
if (i < j)

aux = v(i);
v(i) = v(j);
v(j) = aux;

 while (i<j);
aux = vIzq;
vIzq = vj;
v j = aux;
Orden (v, Izq, j -1)
Orden(v, j+1, Der)

ORDENAMIENTO POR INSERCION

El Metodo de ordenación por inserción consiste en insertar un elemento en el


vector en una pate ya ordenada y comenzar a ordenar con los elementos restantes.

Este metodo se le conoce como Metodo de la baraja òr ser utilizado por lo general
por los jugadores de cartas.

Sea A un arreglo conformado por los elementos A1, A2, A3, . . ., An en memoria.
El metodo consiste en examinar el orden de los elementos si tiene A1, A2, . . . , Ak
en su lugar adecuado y un subarreglo previamento ordenado con elementos A1,
A2, . . ., Ak-1

Pasos de ordenamiento
Paso 1: A1 ya se encuentra ordenado
Paso 2: A2 se inserta antes o depues de A1, de pendiendo si es ascendente o
descendente tal que A1 y A2 ordenados.
Paso3: A3, se inserta, en un lugar adecuado A1, A2 es decir antes que A1,, entre A1
y A2 o despues de A3 y tal que A1, A2, A3 esten ordenados.
.
.
.
Paso n: An, se inserta, en un lugar adecuado A1, A2 , . . . , An-1 tal que A1, A2, A3, …,
An-1 esten ordenados.

El Pseudocodigo correspondiente:

Accion Ord_Inserción (A, N)


Inicio
Para k desde 2 hasta n
Temp = A k
N=k–1
Mientras T<AN
AN - 1 = AN // mueve los elementos hacia elemento
Fin Mientras
AN + 1 = temp
Fin Para
Fin

El metodo consiste hacer el recorrido del arreglo hacuiendo compsraciones ty


desplazamientos sucesivos.

Sea el arreglo A con los siguientes elementos en un un orden:

5, 14, 24, 39, 43, 65, 84,

Se pide insetar el elemento 45

Entonces en el arrego el elemento 45 se colocaría despues de 43 y antes de 65.

Lo que quiere decir que los elementos 65 y 84 tienen que desplazarse para poder
insertar el elemento 45.

ORDENAMIENTO POR SELECCIÓN DEL MENOR

El metodo de insercion del menor, consiste en eaminar A1 hasta A2, buscando el


menor y colocando en la primera posición, se busca el segundo mas pequeño y se
coloca en la posición 2 y asi sucesivamente.

Sea A1, A2, A3, . . . , An en memoria


Paso 1: Encontrar la posicion p del menor n elementos A1, A2, . . . An
Luego se intercambia Ap con A1
A1 ya esta ordenado
Paso 2: Encontrar la posicion p del menor n-1 elementos de A2, A3, . . . An
Luego se intercambia Ap con A2
A1, A2 ya esta ordenados

Paso 3: Encontrar la posicion p del menor n-2 elementos de A3, A4, . . . An


Luego se intercambia Ap con A3
A1, A2 , A3 ya esta ordenados
.
.
.

Paso n: Encontrar la posicion p del menor 2 elementos de An-1, An


Luego se intercambia Ap con An-1
A1, A2, A3, . . . , an-1 ya estan ordenados ya que An-1 <= An

El Pseudocodigo correspondiente:

Accion Selección_Menor(enter v , entero n)


Inicio
Para i desde 1 hasta n -1
k=i //indice del menor
min = vi // valor del menor
para j desde i + 1 hasta n
Si (v  < min) // encontrar el menor
k=j
min = vj
Finsi
vk = vj // Intercambio
vi = min
Fin Para
Fin para
Fin

Codificación del metodo de selección del menor

Void ordenación::Selección_menor(int v  , int n)



int i, j, k,min;
for (i =1, i<n , i++)

k =i; // indice del menor
min = vi; // valor del menor
for (j = i +1; j < = n; j ++ )
 // encontrar el menor
if ( v j <min)

k = j;
min = v j;


vk = vi; // intercambio
v i = min;

ORDENAMIENTO POR SELECCIÓN DEL MAYOR

ORDENAMIENTO POR SELECCIÓN DEL MENOR

El metodo de insercion del mayor, consiste en eaminar A1 hasta A2, buscando el


mayor y colocando en la primera posición, se busca el segundo mas grande y se
coloca en la posición penultima y asi sucesivamente.

Sea A1, A2, A3, . . . , An en memoria


Paso 1: Encontrar la posicion p del mayor n elementos A1, A2, . . . An
Luego se intercambia Ap con An
An-1 ya esta ordenado
Paso 2: Encontrar la posicion p del menor n-1 elementos de A2, A3, . . . An -1
Luego se intercambia Ap con An -1
An - 1, An ya esta ordenados

Paso 3: Encontrar la posicion p del menor n-2 elementos de A3, A4, . . . An-2
Luego se intercambia Ap con An-2
An -2, An -2 , An ya esta ordenados
.
.
.

Paso n: Encontrar la posicion p del menor 2 elementos de A1 A2


Luego se intercambia Ap con A2
A1, A2, A3, . . . , An-1 ya estan ordenados ya que A1 < = A2

El Pseudocodigo correspondiente:

Accion Selección_Mayorenor(enter v , entero n)


Inicio
Para i desde 1 hasta 2
k=i //indice del mayor
max = vi // valor del mayor
para j desde i - 1 hasta l
Si (v  > max) // encontrar el mayor
k=j
max = vj
Finsi
vk = vj // Intercambio
vi = max
Fin Para
Fin para
Fin

Codificación del metodo de selección del menor

Void ordenación::Selección_mayor(int v  , int n)



int i, j, k,max;
for (i =1, i<n , i++)

k =i; // indice del mayor
max = vi; // valor del mayor
for (i = n; i < 1; j - - )
 // encontrar el mayor
if ( v j <max)

k = j;
max = v j;


vk = vi; // intercambio
v i = max;

METODOS DE BUSQUEDA
Sea A: A1, A2, A3, . . . , AN , es una colección de datos en memoria.
Supongamos que se tiene un valor a buscar.
Buscar significa encontrar la posición que ocupa el valor v en A, y si no se
encuentra esvribir un mensaje indicando El elemento no existe en el arreglo”
La busqueda uede realizarse de dos maneras:
- Busqueda Secuencial
- Busqueda Binaria

BUSQUEDA SECUENCIAL

La busqueda secuencial o Lineal , este método ha diseñado para buscar un


elemento en un arreglo, el proceo es sencillo ya que consiste recorrer todo el
arreglo desde el primer elemento hasta el ultimo,r
BUSQUEDA BINARIA. Si el arrglo contiene el elemento se devolverá su posición,
caso contrario se deberá agregar un mensaje indicando “que no existe este dato”
Durante la busqueda se inicia con una variable como pos = 0, se compara cada
elemento del arreglo con el valor buscado. Si en la comparación resulta verdadero.
Se define la busqueda y se guarda la dirección del elemento buscado en la variable
pos. Si llega al final del arreglo esto quiere decir que se recorrio todo el arreglo y
no se ha encontrado el valor buscado, entonces la accion devuelve el valor 0.

Pseudocodigo para la busqueda secuencial

Accion BUS_SEC(A,n,v, pos)


Inicio
i=1
encontro = Falso
Mientras (i < = n  encontro)
Si( A  i = v)
encontro = verdadero
pos = i
sino
i=i+1
Finsi
FinMientras
Fin

La accion Buscar

Accion Buscar
Inicio
Pos = 0
Leer v
BUS_SEC(A,n,v,pos)
Si(pos =0)
Escribir v, “no se encuentra el elemento”
sino
Escribir v, “se encontro en la posición : “ pos
Finsi
fin

BUSQUEDA BINARIA
La busqueda es otro metodo que permite buscar de un elemento o elementos en un
arrglo de mayor cantidad de datos. Consiste en determinar el termino central del
arreglo a traves de su posición inicial hasta su posición final.
Ejemplo
Sea el Arreglo A que consta de 11 elementos. Buscar el elemento 80.

56 69 70 72 76 77 80 89 90 92 95
1 2 3 4 5 6 7 8 9 10 11

Central = (LS + LI)/2


= ( 11 +1)/2
= 6
central = 6 corresponde al valor 77

como el elemento buscado esta en el subarreglo:

80 89 90 92 95
1 2 3 4 5

Buscamos el nuevo termino central

Central = (LS + LI)/2


= ( 5 +1)/2
= 3
Central = 3 corresponde al valor 90,

el elemento buscado esta a la izquierda del termino central

80 89
1 2

Central = (2 +1)/2
Central =1
El elemento central tiene el valor 80, y estees elemento buscado

Que se enuctra en la posion 7.

Ejemplo: Realizar Busqueda Secuencial y Busqueda Binaria en un Arreglo


Unidimensional en lenguaje de programación.

 include <ctype.h >


 include <iostream.h>
 include <stdlib.h>
 include <conio.h >

typedef int (*SearchFunc9 (int, int , int);


const int MIN = 2;
const int MAX = 10;
const int NOT_FOUND=-1;
// Dar la cantidad de elementos del arreglo
int getNumpoints(int low, int high)

int numPoints;
do

cout<<”Ingrese numero de datos  “
<<low<< “ a
<<high <<  : “;
cin>>numPoints;
 while (numPoints < low || numPoints > high);
return numPoints;

// Cargar los datos en el arreglo unidimensional
void inputArray(int intArr , int num)

for(i =0; i< num_elem; i ++)

cout<<”array  “ <<i << “ : “;
cin>>array i  ;


//Mostrar el arreglo
void showArray(int intArr , int num)

for(i =0; i< num_elem; i ++)

cout.width(5);
cout<<intArr i  : << “ “;

cout<<endl;

// Busqueda Lineal o secuencial
int lineal Search(int searchval, intArr , int num)

for(i =0; i< num_elem; i ++)
if(searchval = = intArr )
return i
return NOT_FOUND;

// Subfuncion de Busqueda Binaria Recursiva
int binSearch(int searchval, intArr , int low, int high)

int middle= (low + high)/2;
if(low >high)
return NOT_FOUND;
else if(searchval = = intArr middle)
return middle;
else if(searchval > intArr middle)
return binSearch middle(int searchval, intArr , middle + 1, high);
else
return binSearch middle(int searchval, intArr , low,middle -1);

// Revision para la continuacion de la busqueda
bool shouldSearch(const char* searchType)

char ch;
cout << “Busqueda en : <<searchType << “array ? (Y/N)”;
cin>> ch;
return tolower(ch) == ‘Y’ ;

// Maneja la prueba de busqueda
void searchArray (int int intArr  , int num, const char * searchType, SearchFun
search)

int searchval, index;
char ch;
while (ShouldSearch(searchType ))

cout << “Ingrese el valor de busqueda:”


cin>> searchval ;
index = search(searchval, intArr, num);
if(index ¡= NOT_FOUND)
cout<<”Se encontro el indice del elemento de busqueda<< index <<endl;
else
cout << “ No se encontro el valor de busqueda “<< endl;


// Compara dos enteros
int inputcCmp (const void* item1, const void * item2)
void searchArray (int int intArr  , int num, const char * searchType, SearchFun
search)

return *(int +9 item1 - (int) item2;

// Programa Principal
int main ( )

int arr MAX;
int num_elem;
num_elem= getNumPoints(MIN,MAX);
input Array(, num_elem);
searchArray(arr, num_elem, “Ordenado” , linearSearch);
qsort(arr, numëlem, sizeof(arr 0, inCmp);
cout<<endl<< El arreglo es ordenado:”<<endl;
showArray(arr, num_elem, “Ordenado”, binarySearch);
return 0;
getch( );

Prueba del programa:


Arr 0  : 85
Arr 1  : 41
Arr 2  : 55
Arr 3  : 67
Arr 4  : 48

Arreglo No Ordenado es:


85 41 55 67 48

Busqueda en Arreglo No Ordenado ? (Y/N): Y


Ingrese el valor de busqueda: 55

Se encontro el elemento en el indice 2

Busqueda en Arreglo No Ordenado ? (Y/N): Y


Ingrese el valor de busqueda: 41

Se encontro el elemento en el indice 1

Busqueda en Arreglo No Ordenado ? (Y/N): N

Arreglo Ordenado es:

41 48 55 67 85

Busqueda en Arreglo Ordenado ? (Y/N): Y


Ingrese el valor de busqueda: 55

Se encontro el elemento en el indice 2

Busqueda en Arreglo No Ordenado ? (Y/N): Y


Ingrese el valor de busqueda: 67

Se encontro el elemento en el indice 3

Busqueda en Arreglo Ordenado ? (Y/N): N


UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA

PRACTICA N° 02 DE ESTRUCTURA DE DATOS

1. Realizar un algoritmo para realizar la opción de un vector con otro vector


2. Realizar un algoritmo para realizar el ordenamiento de un Arreglo y la Búsqueda
secuencial.
3. Realizar la codificación para realizar la operación
4. Realizar la codificación o implementación en Lenguaje de Programación C++
para calcular el promedio de un arreglo unidimensional que tenga como máximo
30 elementos
a) Que permita el ingreso a los datos mediante lectura
b) Que permita la declaración de los elementos del arreglo como una constante.
5. Realizar la codificación o implementación en Lenguaje de Programación C++
para la búsqueda en un arreglo unidimensional:
a) Del elemento mayor
b) Del elemento menor
6. Realizar la codificación o implementación en Lenguaje de Programación C++
para calcular el promedio de un arreglo unidimensional:
a) Búsqueda lineal
b) Búsqueda Binaria
7. Realizar la codificación o implementación en Lenguaje de Programación C++
para actualizar la información en un arreglo unidimensional. La actualización
consiste en realizar las siguientes operaciones:
a) Crear un arreglo
b) Adicionar un elemento en un arreglo
c) Mostrar un arreglo
d) Insertar un elemento dado en un arreglo
e) Insertar un elemento en un arreglo en una determinada posición
f) Eliminar un elemento dado de un arreglo
g) Eliminar un elemento en un arreglo en una determinada posición
h) ordenar el arreglo en orden ascendente
i) Ordenar el arreglo es orden descendente
j) Rotar a la izquierda n posiciones un arreglo
k) Rotar a la derecha n posiciones un arreglo
l) Salvar un arreglo
m) recuperar un arreglo
8. Realizar la codificación o implementación en Lenguaje de Programación C++
para realizar el almacenamiento y recorrido en una matriz por columnas y por
filas.
9. Realizar la codificación o implementación en Lenguaje de Programación C++
para calcular la suma de los elementos de 2 vectores y dar el resultado en un tercer
vector
10. Realizar el algoritmo y la codificación o implementación en Lenguaje de
Programación C++ para calcular la mediana de los números de un arreglo.
La median es una mediad estadística que se calcula del siguiente modo:
La mediana de un arreglo de números es el elemento m del arreglo tal que la
mediana es la mitad de los números en el arreglo son mayores o igual a m y la
mitad son menores o iguales que m. si el número de elementos en el arreglo es
impar.
Si el número de elementos es par la medina es el promedio de los elementos m1 y
m2 tal que la mitad de los elementos del arreglo restantes son mayores o iguales a
m1 y m2 y la mitad de los elementos son menores o iguales que m1 y m2.
11. El modo de un arreglo de números es el numero m en el arreglo que se repite
con más frecuencia. Si varios números están repetidos con igual frecuencia
máxima, no existe modo.
Realizar un algoritmo que acepte un arreglo de números y retorne el modo o una
indicación de que el modo no existe.

12. Son una cadena de almacenes de 20 departamentos cada uno vende 10


artículos,. Cada mes un administrador de almacén presenta la siguiente
información el número de almacén y el número de artículo y un valor de ventas en
dólares menores que 10000, representa la venta para ese artículo en esa sucursal.
Sin embargo algunos administradores de los almacenes pueden reportar esta
información (no todos los artículos se venden en todas las sucursales), en este caso
la suma de venta de artículos en ese almacén es cero(0).
Realizar el algoritmo y co0dificación para leer esta información y mostrar una
Tabla de 12 columnas donde la primera columna representa el número de
sucursales de 1 a 20 y la palabra total en la última línea. Las 10 columnas
siguientes deben contener los valores de las ventas totales de cada una de las 20
sucursales para todos los artículos con un total general de ventas para toda la
cadena de almacenes.
13. Realizar un algoritmo para salvar una matriz, luego hacer la Recuperación de la
matriz.
14. Realizar la codificación de la actualización de una matriz. La actualización
consiste de las siguientes operaciones:
a) Crear una matriz
b) Adicionar una fila en una matriz
b) Adicionar una columna en una matriz
c) Mostrar los elementos de una matriz
d) Insertar un elemento dado en una matriz
e) Insertar un elemento en una matriz en una determinada posición
f) Eliminar un elemento dado de una matriz
g) Eliminar un elemento en una matriz en una determinada posición
h) ordenar las columnas de una matriz en orden ascendente
i) Ordenar las filas de una matriz en orden descendente
j) Rotar a la izquierda posiciones una matriz
k) Rotar a la derecha posiciones una matriz
l) Salvar una matriz
m) recuperar una matriz

15. Realizar la codificación implementación en Lenguaje de Programación C++


para realizar la multiplicación de 2 matrices.
16. Realizar la codificación e implementación en lenguaje de programación C++ la
Ordenación de las filas de una matriz por el método de Ordenación rápida o Quick
Sort.
17. Realizar la codificación e implementación en lenguaje de programación C++ la
Ordenación de las columnas de una matriz mediante el método de Inserción.

18. Realizar la codificación e implementación en lenguaje de programación C++ la


Ordenación de las columnas de una matriz mediante el método de Selección del
menor

19. Realizar la codificación e implementación en lenguaje de programación C++ la


Ordenación de las columnas de una matriz mediante el método de Selección del
mayor.
16. Realizar la codificación e implementación en lenguaje de programación C++ la
Búsqueda de los elementos de la Matriz mediante:
- Búsqueda secuencial
- Búsqueda Binaria

19. Realizar el ordenamiento de los nombres de las ciudades más importantes del
Perú.
Se pide:
a) Mostrar el arreglo original
b) Mostrar el arreglo ordenado

19. Realizar el ordenamiento de Apellidos y Nombres de los alumnos de Estructura


de datos.
Se pide
a) Mostrar el arreglo original
c) Mostrar el arreglo ordenado

Вам также может понравиться

  • Diseño de Base de Datos
    Diseño de Base de Datos
    Документ40 страниц
    Diseño de Base de Datos
    Sergio Aroni Carbajal
    67% (3)
  • Formulario Ecuaciones Diferenciales
    Formulario Ecuaciones Diferenciales
    Документ2 страницы
    Formulario Ecuaciones Diferenciales
    Marcelo WPc
    Оценок пока нет
  • Lab Oratorios
    Lab Oratorios
    Документ260 страниц
    Lab Oratorios
    Rodrigo Ramirez
    Оценок пока нет
  • Guía 3, David Rendon, Algoritmos
    Guía 3, David Rendon, Algoritmos
    Документ20 страниц
    Guía 3, David Rendon, Algoritmos
    david
    100% (2)
  • La Bios y Dual Bios
    La Bios y Dual Bios
    Документ30 страниц
    La Bios y Dual Bios
    rene
    Оценок пока нет
  • SAP IDOC Tutorial - En.es
    SAP IDOC Tutorial - En.es
    Документ11 страниц
    SAP IDOC Tutorial - En.es
    Vicente Arellano
    Оценок пока нет
  • Mis Primeros Programas Con PIC16F84A y PIC16F628A PDF
    Mis Primeros Programas Con PIC16F84A y PIC16F628A PDF
    Документ31 страница
    Mis Primeros Programas Con PIC16F84A y PIC16F628A PDF
    Jhonny Wladimir Peñaloza Cabello
    Оценок пока нет
  • Introduccion A Las Bases de Dat - Antonio Sarasa
    Introduccion A Las Bases de Dat - Antonio Sarasa
    Документ308 страниц
    Introduccion A Las Bases de Dat - Antonio Sarasa
    Edgardo Alegre
    100% (1)
  • GGGGG
    GGGGG
    Документ1 страница
    GGGGG
    Sergio Aroni Carbajal
    Оценок пока нет
  • Practica 1
    Practica 1
    Документ3 страницы
    Practica 1
    Sergio Aroni Carbajal
    Оценок пока нет
  • RRR
    RRR
    Документ3 страницы
    RRR
    Sergio Aroni Carbajal
    Оценок пока нет
  • Sergio Aroni 1720049
    Sergio Aroni 1720049
    Документ1 страница
    Sergio Aroni 1720049
    Sergio Aroni Carbajal
    Оценок пока нет
  • Pregunta1 PDF
    Pregunta1 PDF
    Документ1 страница
    Pregunta1 PDF
    Sergio Aroni Carbajal
    Оценок пока нет
  • Vme A1
    Vme A1
    Документ3 страницы
    Vme A1
    Sergio Aroni Carbajal
    Оценок пока нет
  • Drins
    Drins
    Документ40 страниц
    Drins
    Hunson Abadeer
    0% (1)
  • Analisis de Datos
    Analisis de Datos
    Документ11 страниц
    Analisis de Datos
    Sergio Aroni Carbajal
    Оценок пока нет
  • SIS-WEB Sistema Información Seminarios
    SIS-WEB Sistema Información Seminarios
    Документ26 страниц
    SIS-WEB Sistema Información Seminarios
    Sebastian ZorroRodriguez
    Оценок пока нет
  • Introducción al curso de Computación Visual
    Introducción al curso de Computación Visual
    Документ22 страницы
    Introducción al curso de Computación Visual
    Anonymous FxgtOfk5J
    Оценок пока нет
  • 11 Transporte PDF
    11 Transporte PDF
    Документ23 страницы
    11 Transporte PDF
    Sergio Aroni Carbajal
    Оценок пока нет
  • Programando en OpenGL y GLUT
    Programando en OpenGL y GLUT
    Документ5 страниц
    Programando en OpenGL y GLUT
    Sergio Aroni Carbajal
    Оценок пока нет
  • Modelo BD
    Modelo BD
    Документ34 страницы
    Modelo BD
    Sergio Aroni Carbajal
    Оценок пока нет
  • Gestión de Los Procesos de Negocios
    Gestión de Los Procesos de Negocios
    Документ7 страниц
    Gestión de Los Procesos de Negocios
    Sergio Aroni Carbajal
    Оценок пока нет
  • Grupos Ed - 2019
    Grupos Ed - 2019
    Документ2 страницы
    Grupos Ed - 2019
    Sergio Aroni Carbajal
    Оценок пока нет
  • UNMSM AS 00 Presentación
    UNMSM AS 00 Presentación
    Документ16 страниц
    UNMSM AS 00 Presentación
    Sergio Aroni Carbajal
    Оценок пока нет
  • MétodosNuméricosUNMSM
    MétodosNuméricosUNMSM
    Документ49 страниц
    MétodosNuméricosUNMSM
    Jose Luis Artica Villarroel
    0% (1)
  • Entidades
    Entidades
    Документ16 страниц
    Entidades
    Damian Delferro
    Оценок пока нет
  • Silabo AlgoII EAPIS 2018 II
    Silabo AlgoII EAPIS 2018 II
    Документ7 страниц
    Silabo AlgoII EAPIS 2018 II
    Sergio Aroni Carbajal
    Оценок пока нет
  • Ejercicios2 Logica Prop
    Ejercicios2 Logica Prop
    Документ3 страницы
    Ejercicios2 Logica Prop
    Jhonatan Cerna Valverde
    Оценок пока нет
  • Clase 04. Ed
    Clase 04. Ed
    Документ23 страницы
    Clase 04. Ed
    Sergio Aroni Carbajal
    Оценок пока нет
  • Filas Secuenciales
    Filas Secuenciales
    Документ25 страниц
    Filas Secuenciales
    Sergio Aroni Carbajal
    50% (2)
  • Formulario Ecuaciones Diferenciales
    Formulario Ecuaciones Diferenciales
    Документ3 страницы
    Formulario Ecuaciones Diferenciales
    Sergio Aroni Carbajal
    100% (1)
  • Prac 52017 II
    Prac 52017 II
    Документ4 страницы
    Prac 52017 II
    Sergio Aroni Carbajal
    Оценок пока нет
  • Sesion Colas
    Sesion Colas
    Документ46 страниц
    Sesion Colas
    Sergio Aroni Carbajal
    Оценок пока нет
  • Guía11 - 2019 Tpi Ues
    Guía11 - 2019 Tpi Ues
    Документ7 страниц
    Guía11 - 2019 Tpi Ues
    Eduardo
    Оценок пока нет
  • Google Chrome OS
    Google Chrome OS
    Документ12 страниц
    Google Chrome OS
    orejas123
    Оценок пока нет
  • OTC-MAU V - 1.0 Testlink
    OTC-MAU V - 1.0 Testlink
    Документ60 страниц
    OTC-MAU V - 1.0 Testlink
    Lucía Solaris
    Оценок пока нет
  • Microcontroladores (11686)
    Microcontroladores (11686)
    Документ438 страниц
    Microcontroladores (11686)
    raul
    100% (1)
  • Componentes PC
    Componentes PC
    Документ4 страницы
    Componentes PC
    Marvin
    Оценок пока нет
  • Maquinas Estado Finitos Matematicas Discretas 1
    Maquinas Estado Finitos Matematicas Discretas 1
    Документ36 страниц
    Maquinas Estado Finitos Matematicas Discretas 1
    Diego De La Torre
    Оценок пока нет
  • Preguntas
    Preguntas
    Документ2 страницы
    Preguntas
    Noemi Cielo Cervera Quiroz
    Оценок пока нет
  • Tarea 3
    Tarea 3
    Документ3 страницы
    Tarea 3
    BryanJaquez
    Оценок пока нет
  • Diagrama ER Hospital
    Diagrama ER Hospital
    Документ9 страниц
    Diagrama ER Hospital
    Victor Fraide
    Оценок пока нет
  • Requerimientos - IEEE-Estandar-830
    Requerimientos - IEEE-Estandar-830
    Документ12 страниц
    Requerimientos - IEEE-Estandar-830
    Diego Gomez
    Оценок пока нет
  • Laboratorio 4 Arquitectura
    Laboratorio 4 Arquitectura
    Документ8 страниц
    Laboratorio 4 Arquitectura
    Felipe Idrobo
    Оценок пока нет
  • Simulación Del RSLogix Emulate 5000
    Simulación Del RSLogix Emulate 5000
    Документ10 страниц
    Simulación Del RSLogix Emulate 5000
    EJASMANY
    Оценок пока нет
  • Octava Generación - Procesadores Intel
    Octava Generación - Procesadores Intel
    Документ8 страниц
    Octava Generación - Procesadores Intel
    Marco CM
    Оценок пока нет
  • Pract1 201
    Pract1 201
    Документ7 страниц
    Pract1 201
    Armando Nanai
    Оценок пока нет
  • Tactical Combat Smart Phone
    Tactical Combat Smart Phone
    Документ46 страниц
    Tactical Combat Smart Phone
    Fernando Setien Dodero
    Оценок пока нет
  • ASCII_caracter_entero
    ASCII_caracter_entero
    Документ7 страниц
    ASCII_caracter_entero
    Gabriel Ward
    Оценок пока нет
  • Asignación Dinámica de Memoria
    Asignación Dinámica de Memoria
    Документ2 страницы
    Asignación Dinámica de Memoria
    Alicia Ascuc
    Оценок пока нет
  • PRTG
    PRTG
    Документ9 страниц
    PRTG
    Israel Cm
    Оценок пока нет
  • Examen Parcial Semana 4 Estructura de Datos PDF
    Examen Parcial Semana 4 Estructura de Datos PDF
    Документ6 страниц
    Examen Parcial Semana 4 Estructura de Datos PDF
    Eider Fernado Ocoro
    Оценок пока нет
  • Operadores de Búsqueda de Google
    Operadores de Búsqueda de Google
    Документ3 страницы
    Operadores de Búsqueda de Google
    Lucia Insausti
    Оценок пока нет
  • TOLVA VIBRATORIA PARA CAPILAR Todo
    TOLVA VIBRATORIA PARA CAPILAR Todo
    Документ9 страниц
    TOLVA VIBRATORIA PARA CAPILAR Todo
    Ricardo Tomas Muskus Muskus
    Оценок пока нет
  • 02a - Programacion Binaria (Problemas)
    02a - Programacion Binaria (Problemas)
    Документ2 страницы
    02a - Programacion Binaria (Problemas)
    Bryan Huisa
    Оценок пока нет
  • INFORMATICA FORENSE - Yudy PDF
    INFORMATICA FORENSE - Yudy PDF
    Документ50 страниц
    INFORMATICA FORENSE - Yudy PDF
    Yuderly Alvarez Campos
    Оценок пока нет
  • DPD Dead Peer Detection
    DPD Dead Peer Detection
    Документ6 страниц
    DPD Dead Peer Detection
    gustavo_correa5221
    Оценок пока нет
  • Algoritmo de Ordenamiento
    Algoritmo de Ordenamiento
    Документ3 страницы
    Algoritmo de Ordenamiento
    Huesos Gamer
    Оценок пока нет