// Mr. Minich
// CMPSC 101
// Ch. 10 Demo Program #9
// December 4, 2002 
// Purpose - an example of a selection sort

#include <iostream>
#include <time.h>
using namespace std;

void sort(int numbers[], int lengthOfArray);
int indexOfSmallest(int numbers[], int startPosition, int lengthOfArray);

int main()
{
	int numbers[5];
	int i = 0;

	srand(time(0));
	numbers[0] = rand();
	numbers[1] = rand();
	numbers[2] = rand();
	numbers[3] = rand();
	numbers[4] = rand();
	
	cout << "The original numbers in the array are: \n";

	for (i = 0; i < 5; i++)
	{
		cout << numbers[i] << '\t';
	}

	sort(numbers, 5);

	cout << "\n\nThe numbers in ascending order are: \n";
	
	for (i = 0; i < 5; i++)
	{
		cout << numbers[i] << '\t';
	}

	cout << endl << endl;

	return 0;
}// end of main

void sort(int numbers[], int lengthOfArray)
{
	int positionOfSmallest = 0;
	int i = 0;
	int temp = 0;

	for (i = 0; i < lengthOfArray; i++)
	{
		positionOfSmallest = indexOfSmallest(numbers, i, lengthOfArray);

		temp = numbers[i];		// swapping positions
		numbers[i] = numbers[positionOfSmallest];
		numbers[positionOfSmallest] = temp;
	}

}// end of sort

int indexOfSmallest(int numbers[], int startPosition, int lengthOfArray)
{
	int min = numbers[startPosition];
	int indexOfMin = startPosition;
	int i = 0;

	for (i = startPosition + 1; i < lengthOfArray; i++)
	{

		if (numbers[i] < min)
		{
			min = numbers[i];
			indexOfMin = i;
		}

	}

	return indexOfMin;
}// end of indexOfSmallest