viewed 12865 times and licensed 99 times
Insertion sort an array of values.
View version details
Contents  |
|
Interface
#include <codecogs/array/sort/insertion_sort.h>
using namespace Array::Sort;
| template<class T> void | insertionSort (T *array, unsigned int n) Insertion sort an array of values. |
Function Documentation
Insertion sort permutes an array of values to lie in ascending numerical order.
Insertion sort is one of the most compact sorting algorithms available. However,
heap sort beats it in all other criteria.
Like the traditional bubble sort, the complexity of insertion sort is:
For this reason, insertion sort should
only be considered when code size is an important factor. The algorithm sorts
in-place , hence eliminating the need for any extra storage space. The algorithm is also non-recursive, so can never
cause a stack overflow in the case of large arrays.
Insertion sort works by maintaining an
ordered and an
unordered portion of the list. The
unordered portion is reduced
by adding items one at a time into the
ordered portion in the correct place. This is done by shifting values to
create
gaps .
Example 1:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <codecogs/array/sort/insertion_sort.h>
int main()
{
double vals[25];
int n=25;
srand((unsigned int) time(NULL));
for (int i=0; i<n; i++) vals[i]=((double) n*rand())/RAND_MAX;
printf("\nArray to be sorted:\n");
for (int i=0; i<n; i++) printf("%3.0f ", vals[i]);
Array::Sort::insertionSort<double>(vals, n);
printf("\n Sorted array:\n");
for (int i=0; i<n; i++) printf("%3.0f ", vals[i]);
printf("\n");
return 0;
}
Output:
Array to be sorted:
21 10 20 20 23
5 8 19 7 14
12 16 9 13 24
23 16 18 4 15
0 6 3 20 4
Sorted array:
0 3 4 4 5
6 7 8 9 10
12 13 14 15 16
16 18 19 20 20
20 21 23 23 24
Note:
- array indexes start at 0
Parameters:
| array | the array of values to be sorted |
| n | the number of items in the array |
Authors:
- James Warren (July 2005)
Page Comments
You must login to leave a messge
Last Modified: 18 Oct 07 @ 17:07 Page Rendered: 2010-03-14 09:12:32