/*
 * compile with command:
 * $ gcc selection_sort_decrementing.c ../hdr.c
 */

#include <stdio.h>
#include <stdlib.h>
#include "../hdr.h"         // definiton of NELEMS and print_array() and swap()
                            // implemented in ../hdr.c

void selection_sort_decrementing(int numbers[], int n);

int
main(int argc, char *argv[])
{
    int numbers[] = {50, 12, 4, -9, 78, 15, 17, 84, 52};
    int n;

    n = NELEMS(numbers);
    print_array(numbers, n);
    selection_sort_decrementing(numbers, n);
    print_array(numbers, n);

    exit(0);
}

void
selection_sort_decrementing(int numbers[], int n)
{
    int i;          /* find i'th lesser number */
    int j;          /* index for traversing unsorted sub-array */
    int min_index;  /* hold index of minimum number in unsorted sub-array */

    for (i = n-1; i > 0; i--) {
        min_index = i;                          // suppose that number existed
                                                // in numbers[i] is minimum

        for (j = 0; j < i; j++)
            if (numbers[j] < numbers[min_index])
                min_index = j;

        if (min_index != i)
            swap(numbers, i, min_index);
    }
}
