250 likes | 521 Views
Sort an array - the selection sort algorithm. Selection Sort. Selection sort a classic computer algorithm that is used to sort an array The selection sort algorithm can be used to sort any data set where there is an ordering among the data items. Example Problem.
E N D
Selection Sort • Selection sort a classic computer algorithm that is used to sort an array • The selection sort algorithm can be used to sort any data set where there is an ordering among the data items.
Example Problem • You are given the following 5 numbers: 6.4 2.5 1.2 2.2 1.1 • Sort the number in ascending order. I.e., form the following sequence: 1.1 1.2 2.2 2.5 6.4
Overview of the Algorithm (1) • Find the minimum value in the list of number • Swap the minimum value with the value in the first position
Overview of the Algorithm (2) • Repeat the steps above for the remainder of the list • (starting at the second position and advancing each time)
Pseudo code of the Selection Sort algorithm (1) • Let: a = array containing the values • Let: n = # of elements • 1. Find the array element with the min. value among a[0], a[1], ..., a[n-1]; • 2. Swap this element with a[0]
Pseudo code of the Selection Sort algorithm (2) • Repeat: • 1. Find the array element with the min. value among a[1], ..., a[n-1]; • 2. Swap this element with a[1];
Pseudo code of the Selection Sort algorithm (3) • Repeat: • 1. Find the array element with the min. value among a[2], ..., a[n-1]; • 2. Swap this element with a[2]; • And so on (until we reach the last element in the array)
2 (smaller) Problems • Find the array element with the min. value among a[i], ..., a[n-1] (for some given value i) • Swap two array elements
Solving Subproblem 1 (1) Given the array elements a[i], a[i+1], ..., a[n-1] (n = a.length): Find the array element with the minimum value among the array elements a[i], a[i+1], ..., a[n-1]
Refine the Selection Sort algorithm. • We have just develop an algorithm to solve subproblem 1. • Insert the algorithm and we obtain a more refined (more detailed) algorithm:
Solving Subproblem 2 • Swap the elements a[i] and a[min_j]:
Solution: the 3-way exchange algorithm (1) • Imagine you have 2 cups named A and B and each cup contains some liquids (different kinds of liquid in different cups):
Solution: the 3-way exchange algorithm (3) • Pourcup A into the help cup (this will free up cup A) • Pourcup B into cup A (now cup A has the correct content and it will free up cup B) • Finally, pour the help cup into cup B (now cup Balso has the correct content)
Develop Computer Algorithm • Formulate the algorithm using abstract operations • Refine (flesh out) the abstract steps. I.e., make the abstract steps more concrete