Selection sort is a primitive sorting algorithm. The premise is simple: we’re selecting a number and placing it in the correct position in the array. So for each iteration, we find the largest number that we haven’t sorted and place it in the right-most index and keep moving left until the array is fully sorted.

For each iteration of the sort, the sub-array we examine is one less than the previous iteration, i.e., we look for the largest number times for an sized array. For each iteration, we look at a decreasing number of comparisons. This means selection sort has a time complexity of .

To implement iteratively, we need two for loops. The if statement should update the index of the largest element. Here is an iterative implementation in C:

void selectionSort (int list[], int n) {
	int largeLoc;
	for (int top = n - 1; top > 0; top--) {
		largeLoc = 0;
		for (int i = 1; i <= top; i++) {
			if (list[i] > list[largeLoc]) {
				largeLoc = i;
			}
		}
		int temp = list[largeLoc];
		list[largeLoc] = list[top];
		list[top] = temp;
	}	
}

We could probably find a recursive implementation too, or alternatively increment up in the outer for loop by starting from the left end of the array.