![Page 1: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/1.jpg)
Selection Sort, Insertion Sort, Bubble, & Shellsort
CPS212, Gordon College
![Page 2: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/2.jpg)
Outline
Importance of Sorting Selection Sort
Explanation & Runtime Walk through example
Insertion Sort Explanation & Runtime Advantage and Disadvantage Walk through example
Bubble Sort Shell Sort
History Explanation &Runtime Advantage and Disadvantage Walk through example
![Page 3: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/3.jpg)
Why we do sorting? One of the most common programming tasks
in computing. Examples of sorting:
List containing exam scores sorted from Lowest to Highest or from Highest to Lowest
List point pairs of a geometric shape. List of student records and sorted by student
number or alphabetically by first or last name.
![Page 4: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/4.jpg)
Why we do sorting? Searching for an element in an array will be
more efficient. (example: looking for a particular phone number).
It’s always nice to see data in a sorted display. (example: spreadsheet or database application).
Computers sort things fast - therefore it takes the burden off of the user to search a list.
![Page 5: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/5.jpg)
History of Sorting Sorting is one of the most important
operations performed by computers. In the days of magnetic tape storage before modern databases, database updating was done by sorting transactions and merging them with a master file.
![Page 6: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/6.jpg)
History of Sorting It's still important for presentation of
data extracted from databases: most people prefer to get reports sorted into some relevant order before flipping through pages of data!
![Page 7: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/7.jpg)
Selection Sort Repeatedly searches for the largest value
in a section of the data Moves that value into its correct position in a
sorted section of the list
Uses the Find Largest algorithm
![Page 8: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/8.jpg)
Selection Sort
1. Get values for n and the n list items2. Set the marker for the unsorted section at the end of the list3. While the unsorted section of the list is not empty, do steps 4 through 64. Select the largest number in the unsorted section of the list• Exchange this number with the last number in the unsorted section of the list6. Move the marker for the unsorted section left one position7. Stop
![Page 9: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/9.jpg)
Selection Sort Count comparisons of largest so far against
other values
Find Largest, given m values, does m-1 comparisons
Selection sort calls Find Largest n times,
Each time with a smaller list of values
Cost = n-1 + (n-2) + … + 2 + 1 = n(n-1)/2
![Page 10: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/10.jpg)
Selection Sort Time efficiency
Comparisons: n(n-1)/2
Exchanges: n (swapping largest into place)
Overall: (n2), best and worst cases
Space efficiency
Space for the input sequence, plus a constant number of local variables
![Page 11: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/11.jpg)
Selection SortSort: 34 8 64 51 32 21
34 8 64 51 32 21 Set marker at 21 and search for largest
34 8 21 51 32 64 34-32 is considered unsorted list
34 8 21 32 51 64 Repeat this process until unsorted list is empty
32 8 21 34 51 64 21 8 32 34 51 64 8 21 32 34 51 64
^
^
^
![Page 12: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/12.jpg)
Insertion Sort Insertion sort keeps making the left side of the array sorted until
the whole array is sorted. (Sorting cards in your hand) Basic Algorithm:
Repeat the following steps until value in proper position Step 1. Pull out current value into a temp variable Step 2. Check index’s value - if less than temp then
move it left. It is the simplest of all sorting algorithms. Although it has the same complexity as Bubble Sort, the
insertion sort is a little over twice as efficient as the bubble sort.
![Page 13: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/13.jpg)
Insertion Sort
Real life example: An example of an insertion sort occurs
in everyday life while playing cards. To sort the cards in your hand you extract a card, shift the remaining cards, and then insert the extracted card in the correct place. This process is repeated until all the cards are in the correct sequence.
![Page 14: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/14.jpg)
Insertion Sort runtimes Best case: O(n) It occurs when the data is
in sorted order. After making one pass through the data and making no insertions, insertion sort exits.
Average case: (n^2) since there is a wide variation with the running time.
Worst case: O(n^2) if the numbers were sorted in reverse order.
![Page 15: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/15.jpg)
Empirical Analysis of Insertion Sort
Source: http://linux.wku.edu/~lamonml/algor/sort/insertion.html
The graph demonstrates the n^2 complexity of the insertion sort.
![Page 16: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/16.jpg)
Insertion Sort The insertion sort is a good choice for
sorting lists of a few thousand items or less.
![Page 17: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/17.jpg)
Insertion Sort The insertion sort shouldn't be used for
sorting lists larger than a couple thousand items or repetitive sorting of lists larger than a couple hundred items.
![Page 18: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/18.jpg)
Insertion Sort This algorithm is much simpler than the
shell sort, with only a small trade-off in efficiency. At the same time, the insertion sort is over twice as fast as the bubble sort.
![Page 19: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/19.jpg)
Insertion Sort Overview Advantage of Insertion Sort is that it is
relatively simple and easy to implement. Disadvantage of Insertion Sort is that it
is not efficient to operate with a large list or input size.
![Page 20: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/20.jpg)
Insertion Sort Example
Sort: 34 8 64 51 32 21 34 8 64 51 32 21
Pull out 8 into Temp
34 8 64 51 32 21 Compare 34 and 8 - move 34 up a spot
34 34 64 51 32 21 Spot is found for 8 - place it where it belongs
8 34 64 51 32 21
![Page 21: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/21.jpg)
Insertion Sort Example
Sort: 34 8 64 51 32 21 8 34 64 51 32 21
Pull out 64 into Temp
8 34 64 51 32 21 Compare 64 and 34 - place 64 back into slot 2
8 34 64 51 32 21
![Page 22: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/22.jpg)
Insertion Sort Example
Sort: 34 8 64 51 32 21 8 34 64 51 32 21
Pull out 51 into Temp
8 34 64 51 32 21 Compare 51 and 64 - move 64 to the right
8 34 64 64 32 21 Compare 51 and 34 - place 51 into slot 2
8 34 51 64 32 21
![Page 23: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/23.jpg)
Insertion Sort ExampleSort: 34 8 64 51 32 21
8 34 51 64 32 21 Pull out 32 into Temp
8 34 51 64 32 21 Compare 32 and 64 - move 64 to the right
8 34 51 64 64 21 Compare 32 and 51 - move 51 to the right
8 34 51 51 64 21 Compare 32 and 34 - move 34 to the right
8 34 34 51 64 21 Compare 32 and 8 - place 32 in slot 1
8 32 34 51 64 21
What comes next?
![Page 24: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/24.jpg)
Bubble sort Works by repeatedly stepping through the list to be sorted, comparing
two items at a time and swapping them if they are in the wrong order. The pass through the list is repeated until no swaps are needed, which indicates that the list is sorted.
Sort: 34 8 64 51 32 21
Pass 134 8 64 51 32 218 34 64 51 32 218 34 51 64 32 218 34 51 32 64 218 34 51 32 21 64
Pass 28 34 51 32 21 648 34 51 32 21 648 34 51 32 21 648 34 32 51 21 648 34 32 21 51 648 34 32 21 51 64
Worst and average - O(n^2)
Not practical for list with large n - except when list is very close to sorted
Repeat until no swaps are made.
![Page 25: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/25.jpg)
Shellsort Invented by Donald Shell in 1959. 1st algorithm to break the quadratic
time barrier but few years later, a sub quadratic time bound was proven
Shellsort works by comparing elements that are distant rather than adjacent elements in an array.
![Page 26: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/26.jpg)
Shellsort
Shellsort uses a sequence h1, h2, …, ht called the increment sequence. Any increment sequence is fine as long as h1 = 1 and some other choices are better than others.
![Page 27: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/27.jpg)
Shellsort Shellsort makes multiple passes
through a list and sorts a number of equally sized sets using the insertion sort.
![Page 28: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/28.jpg)
Shellsort Shellsort improves on the efficiency of
insertion sort by quickly shifting values to their destination.
![Page 29: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/29.jpg)
Shellsort Shellsort is also known as diminishing
increment sort. The distance between comparisons
decreases as the sorting algorithm runs until the last phase in which adjacent elements are compared
![Page 30: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/30.jpg)
Shellsort After each phase and some increment
hk, for every i, we have a[ i ] ≤ a [ i + hk ] all elements spaced hk apart are sorted.
The file is said to be hk – sorted.
![Page 31: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/31.jpg)
Empirical Analysis of Shellsort
Source: http://linux.wku.edu/~lamonml/algor/sort/shell.html
![Page 32: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/32.jpg)
Empirical Analysis of Shellsort (Advantage)
Advantage of Shellsort is that its only efficient for medium size lists. For bigger lists, the algorithm is not the best choice. Fastest of all O(N^2) sorting algorithms.
5 times faster than the bubble sort and a little over twice as fast as the insertion sort, its closest competitor.
![Page 33: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/33.jpg)
Empirical Analysis of Shellsort (Disadvantage)
Disadvantage of Shellsort is that it is a complex algorithm and its not nearly as efficient as the merge, heap, and quick sorts.
The shell sort is still significantly slower than the merge, heap, and quick sorts, but its relatively simple algorithm makes it a good choice for sorting lists of less than 5000 items unless speed important. It's also an excellent choice for repetitive sorting of smaller lists.
![Page 34: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/34.jpg)
Shellsort Best Case Best Case: The best case in the shell
sort is when the array is already sorted in the right order. The number of comparisons is less.
![Page 35: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/35.jpg)
Shellsort Worst Case The running time of Shellsort depends
on the choice of increment sequence. The problem with Shell’s increments is
that pairs of increments are not necessarily relatively prime and smaller increments can have little effect.
![Page 36: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/36.jpg)
Shellsort Examples
Sort: 18 32 12 5 38 33 16 2
8 Numbers to be sorted, Shell’s increment will be floor(n/2)
* floor(8/2) floor(4) = 4
increment 4:
1 2 3 4
18 32 12 5 38 33 16 2
(visualize underlining)
Step 1) Only look at 18 and 38 and sort in order ; 18 and 38 stays at its current position because they are in order.
Step 2) Only look at 32 and 33 and sort in order ; 32 and 33 stays at its current position because they are in order.
![Page 37: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/37.jpg)
Shellsort Examples
Sort: 18 32 12 5 38 33 16 2
8 Numbers to be sorted, Shell’s increment will be floor(n/2)
* floor(8/2) floor(4) = 4
increment 4:
1 2 3 4
18 32 12 5 38 33 16 2
(visualize underlining)
Step 3) Only look at 12 and 16 and sort in order ; 12 and 16 stays at its current position because they are in order.
Step 4) Only look at 5 and 2 and sort in order ; 2 and 5 need to be switched to be in order.
![Page 38: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/38.jpg)
Shellsort Examples (con’t)
Sort: 18 32 12 5 38 33 16 2
Resulting numbers after increment 4 pass:
18 32 12 2 38 33 16 5* floor(4/2) floor(2) = 2
increment 2: 1 2
18 32 12 2 38 33 16 5
Step 1) Look at 18, 12, 38, 16 and sort them in their appropriate location:
12 38 16 2 18 33 38 5
Step 2) Look at 32, 2, 33, 5 and sort them in their appropriate location:
12 2 16 5 18 32 38 33
![Page 39: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/39.jpg)
Shellsort Examples (con’t)
Sort: 18 32 12 5 38 33 16 2
* floor(2/2) floor(1) = 1increment 1: 1
12 2 16 5 18 32 38 33
2 5 12 16 18 32 33 38
The last increment or phase of Shellsort is basically an Insertion Sort algorithm.
![Page 40: Selection Sort, Insertion Sort, Bubble, & Shellsort](https://reader035.vdocuments.us/reader035/viewer/2022081415/5681365e550346895d9debdc/html5/thumbnails/40.jpg)
Additional Online References Spark Notes (From Barnes & Noble):
http://www.sparknotes.com/cs/