# Sorting and Searching Algorithms

This is a collection of algorithms for sorting and searching. Descriptions are brief and intuitive, with just enough theory thrown in to make you nervous. I assume you know a high-level language, such as C, and that you are familiar with programming concepts including arrays and pointers.

The first section introduces basic data structures and notation. The next section presents
several *sorting* algorithms. This is followed by a section on *dictionaries*, structures
that allow efficient *insert*, *search*, and *delete* operations. The last section
describes algorithms that sort data and implement dictionaries for very large files. Source
code for each algorithm, in ANSI C, is included.

Most algorithms have also been coded in Visual Basic. If you are programming in Visual Basic, I recommend you read Visual Basic Collections and Hash Tables, for an explanation of hashing and node representation. A search for Algorithms at amazon.com returned over 18,000 entries. Here is one of the best.

Introduction to Algorithms

by Thomas H. Cormen

A graduate-level discussion of algorithms that also works for the mathematically challenged.

For additional references see the bibliography. If you are interested in translating this document to another language, please send me email. Special thanks go to Pavel Dubner, whose numerous suggestions were much appreciated. Right-click on the following links for additional downloads:

- PDF document (150k)
- source code (C) (24k)
- source code (Visual Basic) (27k)

Permission to reproduce portions of this document is given provided the web site listed below is referenced, and no additional restrictions apply. Source code, when part of a software project, may be used freely without reference to the author.

Tom Niemann

Portland, Oregon

epaperpress.com