Listing3.11.4.Sieve of Eratosthenes implementation
Example3.11.5.Insertion Sort.
#include <assert.h>
static unsigned find(int* arr, unsigned n, int value)
{
unsigned i = 0;
while (i < n && arr[i] < value)
i++;
return i;
}
static void insert(int* arr, unsigned n, unsigned from, unsigned to)
{
assert(to <= from);
int val = arr[from];
for (unsigned i = to; i <= from; i++) {
int tmp = arr[i];
arr[i] = val;
val = tmp;
}
}
void insertsort(int* arr, unsigned n)
{
for (unsigned i = 1; i < n; i++) {
unsigned pos = find(arr, n, arr[i]);
insert(arr, n, i, pos);
}
}