# is my selection code correct?

I used printf to check the process and final result. The final result is technically correct (the array is sorted in ascending order) but I saw the behaivior of the algorithm and it doesnt look like selection. I could be wrong. Any thoughts? Thanks!

``````int arr[] = {88, 22, 342, 23, 501, 313, 90, 112, 125, 1, 3, 45};
int size = sizeof(arr) / sizeof(arr[0]);

for (int x = 0; x < size; x++){

for (int i = 0; i < size-1; i++){
int holder;

if (arr[i] > arr[x]){
holder = arr[x];
arr[x] = arr[i];
arr[i] = holder;

}

}
}
}
``````
• This is a bubblesort algorithm – MARS Apr 26 '17 at 19:48

Like @MARS pointed out, you currently have a bubble sort algorithm. In a bubble sort algorithm, you iterate over a list, compare adjacent elements, swap elements that are in the wrong order, and "bubble" the largest element to the end. The list is sorted once no elements have been swapped. I got this from the walkthrough.

So what is a selection sort algorithm? According to the walkthrough, the pseudocode for selection sort is:

``````for i = 0 to n - 1
for j = i + 1 to n
find index of minimum value
swap array[min] and array[i]
``````

Here is the pseudocode from the selection sort video (It's a little different as you'll see):

``````for i = 1 to n - 1
min = i
for j = i + 1 to n
if array[j] < array[min]
min = j
if min != i
swap array[min] and array[i]
``````

If you still have issues, comment below. :-)