You are on page 1of 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

You might also like