Anda di halaman 1dari 6

Nombre de alumno:

Escuela: Universidad Abierta y a Distancia de México


Nombre del Docente: Felipe Gayosso Martínez
Semestre: 4
Grupo: B1-001
Ciclo: 2018-2
Asignatura: Estructura de Datos
Actividad 1: Algoritmos de Ordenación y Búsqueda
Algoritmos de Búsqueda
• Los procesos de búsqueda involucran recorrer un arreglo completo con el fin de
encontrar algo. Lo más común es buscar el menor o mayor elemento (cuando es puede
establecer un orden), o buscar el índice de un elemento determinado.
• Para buscar el menor o mayor elemento de un arreglo, podemos usar la estrategia, de
suponer que el primero o el ultimo es el menor (mayor), para luego ir comparando con
cada uno de los elementos, e ir actualizando el menor (mayor). A esto se le llama
Búsqueda Lineal.

Definición:
– Para encontrar un dato dentro de un arreglo, para ello existen diversos algoritmos que
varían en complejidad, eficiencia, tamaño del dominio de búsqueda.
• Algoritmos de Búsqueda: – Búsqueda Secuencial
– Búsqueda Binaria

Búsqueda Secuencial
• Consiste en ir comparando el elemento que se busca con cada elemento del arreglo
hasta cuando se encuentra.
• Busquemos el elementos ‘u’

Búsqueda Secuencial
• Búsqueda del menor menor = a[0];
for (i=1;i<n;i++)
if ( a[i]<menor ) menor=a[i];
• Búsqueda del mayor mayor= a[n-1];
for (i=0;i<n-1;i++)
if ( a[i]>mayor ) mayor=a[i];
• Búsqueda de elemento
encontrado=-1; for (i=0;i<n;i++)
if ( a[i]==elemento_buscado ) encontrado=i;
Búsqueda Binaria
En el caso anterior de búsqueda se asume que los elementos están en cualquier orden. En
el peor de los casos deben hacerse n operaciones de comparación.
Una búsqueda más eficiente puede hacerse sobre un arreglo ordenado. Una de estas es la
Búsqueda Binaria.
La Búsqueda Binaria, compara si el valor buscado está en la mitad superior o inferior. En la
que esté, subdivido nuevamente, y así́ sucesivamente hasta encontrar el valor.
Ordenamiento de Componentes
Ordenamiento Ascendente
• Existen numerosos algoritmos para ordenar.
• Ordenamiento Burbuja(bublesort):
Idea: vamos comparando elementos adyacentes y empujamos los valores más livianos
hacia arriba (los más pesados van quedando abajo). Idea de la burbuja que asciende, por
lo liviana que es.

ORDENAMIENTO SHELL

El ordenamiento Shell (Shell sort en inglés) es un algoritmo de ordenamiento. El método


se denomina Shell en honor de su inventor Donald Shell. Su implementación original,
requiere O(n2) comparaciones e intercambios en el peor caso. Un cambio menor
presentado en el libro de V. Pratt produce una implementación con un rendimiento de
O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por
algoritmos simples pero peor que el óptimo O(n log n). Aunque es fácil desarrollar un
sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de
ejecución.

El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos


separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos
más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con
tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple
ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del
vector están casi ordenados.

shell
#include<stdio.h>
#include<conio.h>
int a[5];
int n=5;
void main()
{
int inter=(n/2),i=0,j=0,k=0,aux;
clrscr();
for (i=0; i<5; i++)
{
printf("INSERTA UN VALOR DEL INDICE %d", i);
scanf("%d",& a);
}
while(inter>0){
for(i=inter;i<n;i++)
{
j=i-inter;
while(j>=0) {
k=j+inter;
if(a[j]<=a[k]){
j--;
}
else{
aux=a[j];
a[j]=a[k];
a[k]=aux;
j=j-inter;
}
}
}
inter=inter/2;
}
for(i=0;i<5;i++)
{
printf("%d n",a);
getch();
}
}
Referencias:

https://www.inf.utfsm.cl/~noell/IWI-131-p1/Tema8b.pdf

Anda mungkin juga menyukai