Documentos de Académico
Documentos de Profesional
Documentos de Cultura
aux=vec[j];
vec[j]=vec[j+1];
vec[j+1]=aux;}
1
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
Ejemplo:
El cdigo realiza un Ordenamiento de datos numricos haciendo uso del Mtodo de la
Burbuja:
<?php
function burbuja($A,$n)
for($i=1;$i<$n;$i++)
for($j=0;$j<$n-$i;$j++)
if($A[$j]>$A[$j+1])
return $A;
function main()
$VectorA=array(5,4,3,2,1);
$VectorB=burbuja ($VectorA,sizeof($VectorA));
for($i=0;$i<sizeof($VectorB);$i++)
echo $VectorB[$i]."\n";
main();
?>
2
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
Ejemplo:
Se desean ordenarse las siguientes claves del arreglo
A: 15, 67, 08, 16, 44, 27, 12, 35, 56, 21, 13, 28, 60, 36, 07, 10
Primera Pasada
Los elementos se dividen en 8 grupos:
A: 15, 67, 08, 16, 44, 27, 12, 35 | 56, 21, 13, 28, 60, 36, 07, 10
La ordenacin produce:
A: 15, 21, 08, 16, 44, 27, 07, 10, 56, 67, 13, 28, 60, 36, 12, 35
Segunda Pasada
Se dividen los elementos en 4 grupos:
A: 15, 21, 08, 16 | 44, 27, 07, 10 | 56, 67, 13, 28 | 60, 36, 12, 35
La ordenacin produce:
A: 15, 21, 07, 10, 44, 27, 08, 16, 56, 36, 12, 28, 60, 67, 13, 35
Tercera Pasada
Se divide los elementos 2 grupos
A: 15, 21 | 07, 10 | 44, 27 | 08, 16 | 56, 36 | 12, 28 | 60, 67 | 13, 35
La ordenacin produce:
A = 07, 10, 08, 16, 12, 21, 13, 27, 15, 28, 44, 35, 56, 36, 60, 67
Cuarta Pasada
Divida los elementos en un solo grupo.
La ordenacin produce:
A: 07, 08, 10, 12, 13, 15, 16, 21, 27, 28, 35, 36, 44, 56, 60, 67
3
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
El cdigo realiza un Ordenamiento de datos numricos haciendo uso del Mtodo Shell:
<?php
function ordenamientoShell($A,$n)
for($inc = 1 ; $inc<$n;$inc=$inc*3+1);
$j = $i;
$temp = $A[$i];
$j = $j - $inc;
$A[$j] = $temp;
$inc/= 2;
return $A;
function main()
$VectorA=array(5,4,3,2,1);
$VectorB=ordenamientoShell($VectorA,sizeof($VectorA));
for($i=0;$i<sizeof($VectorB);$i++)
echo $VectorB[$i]."\n";
main();
?>
4
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
5
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
6
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
<?php
$i = $izq;
$j = $der;
do{
$i++;
$j--;
if( $i <= $j )
$i++; $j--;
while( $i <= $j );
return $A;
function main()
$VectorA=array(5,4,3,2,1);
$VectorB=quicksort($VectorA,0,sizeof($VectorA)-1);
for($i=0;$i<sizeof($VectorB);$i++)
echo $VectorB[$i]."\n";
main();
7
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
8
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
Ejemplo:
El cdigo realiza un Ordenamiento de datos numricos haciendo uso del
Mtodo de Insercin Directa:
<?php
function insercionDirecta($A,$n)
$v = $A[$i];
$j = $i - 1;
$A[$j + 1] = $A[$j];
$j--;
$A[$j + 1] = $v;
return $A;
function main()
$VectorA=array(5,4,3,2,1);
$VectorB=insercionDirecta($VectorA,sizeof($VectorA));
for($i=0;$i<sizeof($VectorB);$i++)
echo $VectorB[$i]."\n";
main();
?>
9
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
aux = A[i];
izq=1;
der=i-1;
mientras (izq<=der)
si (aux<A[m])
der=m-1;
si no
izq=m+1;
j=i-1;
mientras (j>=izq)
A[j+1]=A[j];
j=j-11;
} A[izq]=auz; }
10
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
Procedimiento
El proceso comienza comparando el elemento central del arreglo con el valor buscado.
Si ambos coinciden finaliza la bsqueda. Si no ocurre as, el elemento buscado ser
mayor o menor en sentido estricto que el central del arreglo. Si el elemento buscado es
mayor se procede a hacer bsqueda binaria en el subarray superior, si el elemento
buscado es menor que el contenido de la casilla central, se debe cambiar el segmento a
considerar al segmento que est a la izquierda de tal sitio central.
El cdigo realiza un Ordenamiento de datos numricos haciendo uso del
Mtodo de Insercin Binaria:
<?php
function insercionBinaria($A,$n)
for($i=1;$i<$n;$i++)
$aux = $A[$i];
$izq=0;
$der=$i-1;
while($izq<=$der)
$m=(($izq+$der)/2);
if ($aux<$A[$m])
$der=$m-1;
else
$izq=$m+1;
$j=$i-1;
while($j>=$izq)
$A[$j+1]=$A[$j];
$j=$j-1;
$A[$izq]=$aux;
return $A;
11
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
function main()
$VectorA=array(5,4,3,2,1);
$VectorB=insercionBinaria($VectorA,sizeof($VectorA));
for($i=0;$i<sizeof($VectorB);$i++)
echo $VectorB[$i]."\n";
main();
?>
12
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
Mtodo De Seleccin.
El mtodo de ordenamiento por seleccin consiste en encontrar el menor de todos los
elementos del arreglo e intercambiarlo con el que est en la primera posicin. Luego el
segundo ms pequeo, y as sucesivamente hasta ordenar todo el arreglo.
Procedimiento Selection Sort.
Paso 1: [Para cada pos. del arreglo] For i <- 1 to N do
Paso 2: [Inicializa la pos. del menor] menor <- i
Paso 3: [Recorre todo el arreglo] For j <- i+1 to N do
Paso 4: [Si a[j] es menor] If a[j] < a[menor] then
Paso 5: [Reasigna el apuntador al menor] min = j
Paso 6: [Intercambia los datos de la pos.
Min y posicin i] Swap(a, min, j).
Paso 7: [Fin] End.
Ejemplo:
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el
menor elemento es la primera 'a'. De manera que no ocurre ningn cambio. Luego se
procede a buscar el siguiente elemento y se encuentra la segunda 'a'. Esta se
intercambia con el dato que est en la segunda posicin, la 's', quedando el arreglo as
despus de dos recorridos: a =
['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].
El siguiente elemento, el tercero en orden de menor mayor es la primera
'e', la cual se intercambia con lo que est en la tercera posicin, o sea, la
'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.
El arreglo ahora se ve de la siguiente manera: a =
['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].
De esta manera se va buscando el elemento que debe ir en la siguiente posicin hasta
ordenar todo el arreglo.
El nmero de comparaciones que realiza este algoritmo es :
Para el primer elemento se comparan n-1 datos, en general para el elemento i-simo se
hacen n-i comparaciones, por lo tanto, el total de comparaciones es:
la sumatoria para i de 1 a n-1 (n-i) = 1/2 n (n-1).
13
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
<?php
function selectionsort($A,$n)
$min=$i;
$min=$j;
$aux=$A[$min];
$A[$min]=$A[$i];
$A[$i]=$aux ;
return $A;
function main()
$VectorA=array(5,4,3,2,1);
$VectorB=selectionsort($VectorA,sizeof($VectorA));
for($i=0;$i<sizeof($VectorB);$i++)
echo $VectorB[$i]."\n";
main();
?>
14
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
Mtodo De HEAPSORT.
El ordenamiento por heapsort es un algoritmo de ordenacin no recursivo, no estable,
con complejidad computacional.
El Heapsort est basado en el uso de un tipo especial de rbol binario (llamado
apilamiento) para estructurar el proceso de ordenamiento. La estructura de
ramificacin del rbol conserva el nmero de comparaciones necesarias en O(n log n).
Caractersticas
Las llaves estn acomodadas en los nodos de tal manera que, para cada nodo i, Ki <=
Kj donde el nodo j es el padre del nodo i. Es decir, al recorrer el camino desde la raz
hacia abajo, las claves se encuentran en orden descendente.
El rbol se llena de izquierda a derecha, lo que implica que si algn(os) nodo(s) no
est(n) en el mismo nivel que el resto, ste(os) estar(n) entonces lo ms a la izquierda
posible del rbol.
Pasos de Heap
1. Saca el valor mximo del Heap. (El de la posicin 1).
2. Pone el valor sacado en el arreglo ordenado.
3. Reconstruir el Heap con un elemento menos.
15
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
function heapsort($A,$n)
for($k=$n-1;$k>=0;$k--)
for($i=1;$i<=$k;$i++)
$item=$A[$i];
$j=$i/2;
$A[$i]=$A[$j];
$i=$j;
$j=$j/2;
$A[$i]=$item;
$temp=$A[0];
$A[0]=$A[$k];
$A[$k]=$temp;
return $A;
function main()
$VectorA=array(5,4,3,2,1);
$VectorB=heapsort($VectorA,sizeof($VectorA));
for($i=0;$i<sizeof($VectorB);$i++)
echo $VectorB[$i]."\n";
main();
?>
16
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
Bsqueda
La bsqueda es una operacin que tiene por objeto la localizacin de un elemento
dentro de la estructura de datos. A menudo un programador estar trabajando con
grandes cantidades de datos almacenados en arreglos y pudiera resultar necesario
determinar si un arreglo contiene un valor que coincide con algn valor clave o
buscado.
Siendo el array de una dimensin o lista una estructura de acceso directo y a su vez de
acceso secuencial, encontramos dos tcnicas que utilizan estos dos mtodos de
acceso, para encontrar elementos dentro de un array: bsqueda lineal y bsqueda
binaria.
Bsqueda Secuencial.
La bsqueda secuencial es la tcnica ms simple para buscar un elemento en un
arreglo. Consiste en recorrer el arreglo elemento a elemento e ir comparando con el
valor buscado (clave). Se empieza con la primera casilla del arreglo y se observa una
casilla tras otra hasta que se encuentra el elemento buscado o se han visto todas las
casillas. El resultado de la bsqueda es un solo valor, y ser la posicin del elemento
buscado o cero. Dado que el arreglo no est en ningn orden en particular, existe la
misma probabilidad de que el valor se encuentra ya sea en el primer elemento, como
en el ltimo. Por lo tanto, en promedio, el programa tendr que comparar el valor
buscado con la mitad de los elementos del arreglo.
El mtodo de bsqueda lineal funciona bien con arreglos pequeos o para arreglos no
ordenados. Si el arreglo est ordenado, se puede utilizar la tcnica de alta velocidad de
bsqueda binaria, donde se reduce sucesivamente la operacin eliminando repetidas
veces la mitad de la lista restante.
Bsqueda Binaria.
La bsqueda binaria es el mtodo ms eficiente para encontrar elementos en un
arreglo ordenado. El proceso comienza comparando el elemento central del arreglo con
el valor buscado. Si ambos coinciden finaliza la bsqueda. Si no ocurre as, el elemento
buscado ser mayor o menor en sentido estricto que el central del arreglo. Si el
elemento buscado es mayor se procede a hacer bsqueda binaria en el subarray
superior, si el elemento buscado es menor que el contenido de la casilla central, se
debe cambiar el segmento a considerar al segmento que est a la izquierda de tal sitio
central.
17
Estructura de Datos Mtodos de Ordenamiento y BsquedaMaximiliano Ledesma
include "funsionbuscar.php";
$a =array(2,4,5,8,10,14,18,21,7,68,45,24);
$n = -1;
$valor = 14;
$long = sizeof($a);
?>
<?php
/* funcion buscar
*/
Pgina principal
Unknown en 15:50
if ($valor == $a[$i]){
$n = $i;
$i = $long;
} else {
?>
18