Insertion Sort
Insertion Sort
Insertion Sort
Outline
Importance of Sorting Insertion Sort
Explanation Runtime Advantage and Disadvantage Walk through example History Explanation Runtime Advantage and Disadvantage Walk through example
Shell Sort
Why we do sorting?
Commonly encountered programming task in computing. Examples of sorting:
List containing exam scores sorted from Lowest to Highest or from Highest to Lowest List containing words that were misspelled and be listed in alphabetical order. List of student records and sorted by student number or alphabetically by first or last name.
Why we do sorting?
Searching for an element in an array will be more efficient. (example: looking up for information like phone number). Its always nice to see data in a sorted display. (example: spreadsheet or database application). Computers sort things much faster.
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.
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!
Insertion Sort
Insertion sort keeps making the left side of the array sorted until the whole array is sorted. It sorts the values seen far away and repeatedly inserts unseen values in the array into the left sorted array. 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.
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.
Source: http://linux.wku.edu/~lamonml/algor/sort/insertion.html
Insertion Sort
The insertion sort is a good choice for sorting lists of a few thousand items or less.
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.
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.
8 34 64 51 32 21
51 is smaller than 64, so they swap.
8 34 51 64 32 21
8 32 34 51 64 21
The algorithm sees 21 as another smaller number and moves into between 8 and 32.
Shellsort
Founded by Donald Shell and named the sorting algorithm after himself 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 or list where adjacent elements are compared.
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.
Shellsort
Shellsort makes multiple passes through a list and sorts a number of equally sized sets using the insertion sort.
Shellsort
Shellsort improves on the efficiency of insertion sort by quickly shifting values to their destination.
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
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.
Source: http://linux.wku.edu/~lamonml/algor/sort/shell.html
Shellsort Examples
Sort: 18 32 12 5 38 33 16 2
8 Numbers to be sorted, Shells increment will be floor(n/2) * floor(8/2) floor(4) = 4 increment 4: 1 2 3 4 (visualize underlining)
18 32 12 5 38 33 16
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.
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.
Step 1) Look at 18, 12, 38, 16 and sort them in their appropriate location: 12 12 38 2 16 16 2 5 18 18 33 32 38 38 5 33
Step 2) Look at 32, 2, 33, 5 and sort them in their appropriate location:
12
2
2
5
16
12
5
16
18
18
32
32
38
33
33
38
The End