10. Sorted Unsorted
Among the remaining cards
the king is the largest.
It will remain in place.
But the algorithm may perform
Some empty operations
(ie., swap it with itself in place)
11. Sorted Unsorted
Among the remaining cards
the queen is the largest.
It will remain in place.
But the algorithm may perform
Some empty operations
(i.e., swap it with itself in place)
12. Sorted Unsorted
Among the remaining cards
the Jack is the largest.
It will remain in place.
But the algorithm may perform
Some empty operations
(i.e., swap it with itself in place)
14. Sorted Unsorted
We are down to the last card.
Because there is only one and
Because we know that it is
Smaller than all the rest
We don’t need to do anything
Else with it. This is why the
Algorithm goes up to < N-1
19. // Selection Sort
#include <stdlib.h>
#define N 6
int main()
{
int a[N]= { 23, 78, 45, 8, 32, 56};
int i,j;
// Sort the array using Selection Sort
int minIndex;
for(i=0; i < N-1; i++)
{
// find the minimum element in the unsorted part of the
array
minIndex=i;
for(j=i+1; j < N; j++)
if(a[j] < a[minIndex])
minIndex = j;
// Swap a[i] with the smallest element
int temp = a[i];
a[i] = a[minIndex];
a[minIndex] = temp;
}
system("pause");
20. Time Complexity
• Analysis of the worst case:
– Outer loop executes N-1 times (no exch rqd. for final element).
– Inner loop executes N-i-1 comparisons.
(N-1) + (N-2) + … + 2 + 1 = N*(N-1)/2 = O(N2
)
The worst case occurs if the array is already sorted in descending order.
Best Case = O (n^2)
Average Case = O(n^2)
Selection sort is an inplace sorting algorithm. So its takes
constant O(1) space.
21. Advantages
– Easy to write
– Can be done “in place”
– Can be done on linked lists too (keep a tail pointer)
22. Disadvantages
– It is about N2
even in the best case for
comparisons.
– So the running time (over all inputs) is
approximately O(N2
).
– The primary disadvantage of selection sort is its
poor efficiency when dealing with a huge list of
items.