I'd greatly appreciate it if someone could explain for me exactly how the selection sort algorithm works.

Code:
for (startScan = 0; startScan < (elems - 1); startScan++)
{
	minIndex = startScan;
	minValue = array[startScan];

	for (int index = startScan + 1; index < elems; index++)
	{
		if (array[index] < minValue)
		{
			minValue = array[index];
			minIndex = index;
		}
	}
	array[minIndex]  = array[startScan];
	array[startScan] = minValue;
}
The relationship between

Code:
minIndex = startScan;
minValue = array[startScan];
and

Code:
array[minIndex]  = array[startScan];
array[startScan] = minValue;
is especially confusing me.