'

Los algoritmos de ordenación se encargan de colocar en secuencia una serie de datos que cumplan una relación de orden creciente o decreciente, y la serie de datos a ordenar pueden ser numéricos o basados en caracteres, colocados dentro de una estructura de datos. Los algoritmos de búsqueda son los algoritmos que nos permiten encontrar un elemento dentro de una estructura de datos. Para la explicación de los algoritmos de ordenación y búsqueda usaremos los arreglos dinámicos como la estructura que contendrá los datos. El hecho de que los ejemplos en este capítulo usen arreglos dinámicos no significa que estos algoritmos no se puedan usar con otras estructuras de datos.

Los algoritmos de ordenación que veremos son: Ordenamiento por inserción (Insertion sort), Ordenamiento Shell (Shell sort), Ordenamiento rápido (Quick sort) y Ordenamiento por bases (Radix sort).

De los algoritmos de búsqueda que veremos son: Búsqueda lineal y binaria (Lineal and Binary Search) y el Búsqueda de cadena de caracteres Boyer & More.

Para explicar los algoritmos de ordenación, he creado la unidad Listas con el propósito de usarlo en los ejemplos de este capítulo. Esta unidad contiene los tipos de datos que se van a usar con los algoritmos de ordenación. Los tipos de datos son: LNaturales, LEnteros, LReales y LPalabras. Todos son arreglos dinámicos, LNaturales son de tipo qword, LEnteros de int64, LReales de double y LPalabras de Unicodestring.

Además tiene las siguientes rutinas ListaAleatoria, que permite llenar la lista con números casi aleatorios, para el caso de los arreglos LNaturales, LEnteros, LReales, y con caracteres al azar para LPalabras.

ListaAleatoria es un procedimiento sobrecargado, que tiene dos parámetros el primero es la lista a llenar con datos aleatorios y el segundo parámetro es un numero de tipo int64, que indicará el número máximo de números aleatorias a crear cuando el primer parámetro sea una de las siguientes listas: LNaturales, LEnteros, LReales. Pero cuando el primer parámetro es LPalabras entonces el segundo indicará la longitud de caracteres máximo para la generación de palabras. Las palabras que se generan, no tienen significado sólo son combinaciones de caracteres del alfabeto en latín en mayúscula. La siguiente tabla muestra los posibles resultados de la función ListaAleatoria:

A es LNaturales,

ListaAleatoria(A,90)

A es LEnteros

ListaAleatoria(A,90)

A es LReales

ListaAleatoria(A,90)

A es LPalabras

ListaAleatoria(A,5)

1

5

12

15

30

89

5

0

58

-1

2

5

85

-15

0

-88

-10

56

5.6

-2.5

5.9

-15

45

89

0.4

3.5

-4.2

ABFG

FRD

QWE

DF

GFHJ

TYU

KLZO

GHT

F

La unidad Listas la pueden descargar del siguiente enlace: Listas.zip