viernes, 1 de agosto de 2014

Algoritmos de Ordenamiento y de busquedas

Algoritmos  de Ordenamientos

estos algoritmos nos ayudan a ordenar datos, en vectores y matrices,

Una comparación consiste en tomar dos valores y determinar cual de los dos es mayor o menor. 
Un intercambio consiste en tomar dos valores e intercambiar su posición.

Para cada algoritmo se miden la cantidad de comparaciones e intercambios realizados, el tiempo de ejecución, pre-requisitos etc.

Método Burbuja.



Este algoritmo compara 2 elementos consecutivos del arreglo, coloca el mayor en la posición derecha y el menor en la posición izquierda. 
Repite este procedimiento por todo el arreglo para ubicar un dato en su posición.
Por lo tanto se repite n veces para ubicar los n elementos.

Método de Inserción.

El ordenamiento por inserción es el método que utilizamos para ordenar un mazo de cartas de baraja. 
Inicialmente se considera la primer carta como ordenada y en base a esta se ordenan todas las cartas de la derecha.
Cada que se elige una nueva carta se compara de derecha a izquierda con todas hasta encontrar una mayor. 
En este punto se inserta la nueva carta.

Método de Selección.

La idea básica de este algoritmo consiste en buscar el menor elemento del arreglo y colocarlo en la primera posición. 
Luego se busca el segundo elemento mas pequeño del arreglo y lo colocamos en la segunda posición. El proceso continua hasta que todos los elementos del arreglo hayan sido ordenados.
La ventaja de éste algoritmo es que a pesar de hacer muchas comparaciones, solo hace un intercambio después de recorrer todo el arreglo.
Es decir solo en total hace máximo n intercambios.

Método de QuickSort.


El ordenamiento rápido es un algoritmo recursivo basado en la técnica de divide y venceras.
  Elige un elemento de la lista al que llama pivote.
  Acomodar todos los elementos de la lista al lado del pivote, coloca a su izquierda todos los menores, y a su derecha otro los mayores.

  Entonces el pivote ya esta en su posición (ordenado)
  Ahora tenemos dos sublistas, una de menores y una de mayores. Repetir este proceso de forma recursiva para cada sub lista. 

Algoritmos de Búsqueda.

Un algoritmo de búsqueda es un método cuya función es localizar un dato.
Dado un conjunto de datos almacenados en un arreglo, determinar cuál es la posición en la que se encuentra el elemento buscado o en su defecto, determinar que no se encontró en ese conjunto.

Secuencial.

Cuando se realiza un búsqueda secuencial sobre un arreglo se comparan uno a uno todos los elementos del arreglo hasta que encuentra el que esta buscando.

Binaria.

Antes se realizar un búsqueda binaria sobre un arreglo, se necesita que el arreglo este ordenado. Entonces va dividiendo el arreglo por la mitad hasta que encuentra el que esta buscando.


Ejemplos ordenamientos y busquedas :
O&&B

sábado, 5 de julio de 2014

Estructuras De Datos con Arrays

En esta sección manejaremos arreglos en nuestras estructuras 
puede ser un poco mas conveniente iniciar con estas 
para comprender el funcionamiento de las listas, pilas y colas,
pero tiene un inconveniente: el manejo restringido de memoria,
donde podremos enfrentar dos problemas, uno seria el limite de elementos a manejar y
el otro seria desperdicio de memoria con elementos que no utilizaremos.

Lista:

se pude definir su estructura como:

typedef struct{
                                                               tipodeDato x [numero de elementos de la lista];
          int siguiente;
}Lista;

tendrá funciones como: inicializa, vacía, llena, imprimir, borrar, modificar etc;

Pila:

se pude definir su estructura como:

typedef struct{
                                                               tipodeDato x [numero de elementos de la lista];
   int top;
}Pila;

tendrá funciones como: inicializa, vacía, llena, top, desapilar, apilar etc;

Cola:

se pude definir su estructura como:

typedef struct{
                                                               tipodeDato x [numero de elementos de la lista];
       int frente;
   int final;
}Cola;

tendrá funciones como: inicializa, vacía, imprimir, dequeue, enqueue etc;
Ejemplos de estructuras de datos con arrays
Lista
Pila
Cola

Nota: Para poder incluir archivo ".h"  a nuestro main , necesita estar en la misma capeta raíz y se incluye así  #include "listas.h", la primera función a utilizar siempre sera inicializar, si se omite esto por ende no funcionaran las demás.

Ejemplos de una lista, cola y una pila (Archivos.jar)

Lista:

Es una colección de elementos ordenados por posiciones donde todos los elementos de la lista son del mismo tipo.


Cola:

Las colas son un tipo de listas donde todas las operaciones se efectúan sobre dos posiciones de la cola "Frente" y "Final", solo se puede insertar en la posición "Final" y eliminar en la posición "Frente".


Pila:

Las pilas son un tipo de listas donde todas las operaciones se efectúan sobre una sola posición de la pila "top", solo se puede insertar y eliminar en dicha posición.    



Ejemplos .jar :
Lista
Pila
Cola

Nota: necesitas descargar java a tu ordenador para ejecutar los ,jar