The pseudocode for selection sort is as follows for int i = 0 to i < n - 1, increment i by 1 { declare an int named min and set it to i for int j = i + 1 to j < n, increment j by 1 { if values[min] > values[j] { set min to j } } swap values[i] and values[min] } You did most of it correctly though! However, you shouldn't be swapping the two values every time `values[min] > values[j]` because that would mess things up. Consider the following example array: 5, 4, 3, 2, 1 pick the 5 walkthrough the list {4, 3, 2, 1} and pick the least element (i.e., 1) swap it with the 5 array: 1, 4, 3, 2, 5 ... This way, you guarantee that after the first iteration of the outer loop, the least element in the array will be positioned at index *0*. What you're doing is something like array: 5, 4, 3, 2, 1 walkthrough the list {4, 3, 2, 1} if 5 > the current element swap them array: 4, 5, 3, 2, 1 ...