Optimized bubble sort algorithm
June 30, 2013
Selection Sort – Video
July 1, 2013

Selection Sort

watch_videoSelection sort is an in-place, comparison sorting algorithm. Like bubble sort it also divides the given array in two sub arrays sorted and unsorted, divided by an imaginary wall.
Initially all the elements will be in the unsorted list. Each pass will pick the smallest element from the unsorted list and add it at the end of the sorted list, this will move the imaginary wall one step forward making more room in the sorted list and less room in the unsorted list.
After i passes, there will be i elements in the sorted list and (n-i) elements in the unsorted list. Hence we need n passes to sort the entire list, But out of n passes we can skip the last pass, because if n-1 smallest elements are removed from the list, then the last element left will be by default the largest.
Example: Let the initial (unsorted) array be as given below:

selection sort_1

Initially all the elements are in the unsorted list. We will search for the smallest element in the unsorted list and then swap it with the first element.

selection sort_2

Then search for the next smallest element in the sorted list and replace it with the second element.

selection sort_3

Repeat the above process for all the element:

selection sort_4

selection sort_5

selection sort_6

selection sort_7

selection sort_8

Once n-1 smallest elements are moved at the first (n-1) positions in sorted order, we don’t need to do anything, because the last element will be the largest. (Hence, we need to execute only n-1 passes)

selection sort_9

Code:

void selectionSort(int *arr, int n)
{
    for(int i=0; i<9; i++)
    {
        // index of smallest element in unsorted array.
        int min = i;
        for(int j=i+1; j<10; j++)
        {
            if(arr[j]<arr[min])
                min = j;
        }
        // If first element in the unsorted list is not the smallest
        // swap it with the smallest.
        if(min != i)
        {
            int temp = arr[min];
            arr[min] = arr[i];
            arr[i] = temp;
        }
    }
}

Time Complexity: O(n2)
Extra Space used: O(1) – In place algorithm.
Comparison of Selection sort and Bubble sort:

Selection sort is almost similar to Bubble sort. The major difference is that there is only one swap per pass in selection sort where as there is no such limit for bubble sort.

The optimization of bubble sort can also be applied on selection sort. So in a way, it is more optimized than Bubble sort

Leave a Reply

Your email address will not be published. Required fields are marked *