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 • 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) Overview of the Algorithm (3) 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) Algorithm (1) Algorithm (2) 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] Solving Subproblem 1 (2) 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 (2) Solution: the 3-way exchange algorithm (3) • Pour cup A into the help cup (this will free up cup A) • Pour cup 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 B also has the correct content) Solution: the 3-way exchange algorithm (4) Refine the Selection Sort algorithm further The Selection Sort algorithm - in Java The Algorithm is Simple Develop Computer Algorithm • Formulate the algorithm using abstract operations • Refine (flesh out) the abstract steps. I.e., make the abstract steps more concrete