15
Métodos De Ordenación y Búsqueda

Metodos de ordenacion en c++

Embed Size (px)

DESCRIPTION

c++ - PowerPoint PPT Presentation

Citation preview

Page 1: Metodos de ordenacion en c++

Métodos

De Ordenación y Búsqueda

Page 2: Metodos de ordenacion en c++

Ordenación

Definición:• Es una operación que

consiste en disponer un conjunto de estructuras de datos en algún determinado orden con respecto a uno de los campos de elementos del conjunto

Ejemplos un lista de clientes una lista de piezas

Page 3: Metodos de ordenacion en c++

Colección de datos

DefiniciónUna colección de datos

clasificados se pueden almacenar en un archivo, vector o tabla, una lista enlazada o árbol

• Una lista enlazada tiene un conjunto de nodos, los cuales almacenan 2 tipos de información: El dato que contienen y un puntero al siguiente nodo en la lista. El último nodo de la lista tiene como siguiente nodo el valor NULL.

Page 4: Metodos de ordenacion en c++

Clasificación de Ordenación

• InternaArregloLista enlazadaárbol

• ExternaArchivoCintasDispositivos electrónicos

Page 5: Metodos de ordenacion en c++

Concepto de Árbol• Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos.

Árbol• Definiremos varios conceptos. En relación con otros nodos:• Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del árbol. • Nodo padre: nodo que contiene un puntero al nodo actual. • Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. • Nodo hoja: nodo que no tiene hijos.

Page 6: Metodos de ordenacion en c++

Clasificación de las listas

Las listas pueden estar ordenada en formas ascendente o descendente.

Ejemplos Números: 14-4-32-21-45-5A:4-5-14-21-32-45D:45-32-21-14-5-4Ejemplos Letras: Rojas, Del Valle,Flores,ZacariasA:D:

Page 7: Metodos de ordenacion en c++

Métodos de Ordenación Básicos

Los métodos básicos de ordenación más simples son

• Ordenación por Selección• Ordenación por Inserción• Ordenación por Burbuja

Page 8: Metodos de ordenacion en c++

Ordenación por Selección• Seleccionar el elemento menor dentro de

nuestro conjunto• Intercambiar dicho elemento con el primer

elemento de nuestro conjunto• X [5]:Indices 0 1 2 3 4

• Indices x[0]>x[1] • X [5]: • Indices x[0]>x[2]

5 4 3 2 1

4 5 3 2 1

Page 9: Metodos de ordenacion en c++

Ordenación por Selección

• X[5]:• 0 1 2 3 4

• Indices x[0]>x[3]

• X[5]:• 0 1 2 3 4

• Indices x[0]>x[4]• X[5]:

• Cantidad de comparaciones,intercambio,recorridos.

3 5 4 2 1

2 5 4 3 1

1 5 4 3 2

Page 10: Metodos de ordenacion en c++

Pseudocódigo

Para i=1 hasta n-1 para j=i+1 hasta n si x[i] >x[j] entonces temp=x[i] x[i]=x[j] x[j]=temp fin si fin para fin para

Page 11: Metodos de ordenacion en c++

Código en Lenguaje CSelección( int n , A[]) { int i,j, tmp; For ( i=0 ; 1<n-1 ; 1++) { For( j=i+1 ; j<n ; j++) If (x[i]>x[j]) { tmp=x[i]; x[i]=x[j]; x[j]=tmp; } } }

Page 12: Metodos de ordenacion en c++

Ejercicios

• El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].

Page 13: Metodos de ordenacion en c++

Ordenación por Inserción

• Este método consiste en insertar un elemento en el vector en una parte ya ordenada de este vector y comenzara de nuevo con los elementos restantes. también se conoce como método de la baraja.

• Y[6]:Índice 0 1 2 3 4 5

6 5 3 8 1 7

Page 14: Metodos de ordenacion en c++

Ordenamiento Burbuja• Comparar elementos consecutivos en cada paso a lo

largo del arreglo.Cada vez que se realiza una comparación, los elementos se intercambian entre si en caso de no estar en orden.Se le llama de burbuja, porque en la ordenación los elementos mas ligeros suben en la lista.

Se pasa varias veces a través del arreglo en forma secuencial.Cada paso consiste en la comparación de cada elemento con su sucesor, y el intercambio de los dos elementos si no están en el orden correcto.

Page 15: Metodos de ordenacion en c++

#include<stdio.h>#include<conio.h> int main(){printf("ingrese el valor de n\n");scanf("%d",n);//ingreso de valores al arreglofor(i=0;i<n-1;i++){ prinft("ingrese valores al arreglo\n"); scanf("%d",&a[i]);}//fin de ingreso de valores al arreglo//inicio del método de la burbuja

for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++) { if(a[i]>a[j]) { aux=a[i]; a[i]=a[j]; a[j]=aux; } }}// fin del ordenamiento