Download presentation
Presentation is loading. Please wait.
Published byRosa Strickland Modified over 9 years ago
1
Sorting
2
Sorting Sorting is important! Things that would be much more difficult without sorting: –finding a telephone number –looking up a word in the dictionary –finding a book in the library –buying a cd –renting a movie –reading a book –reading new email
3
How to sort? Think about sorting a hand of cards
4
Comparison-based sorting Sort by making comparisons Ordering decision based on comparison of elements Requires that elements are comparable –have a natural order numerical –numbers lexicographic (alphabetical) –characters chronological –dates
5
Insertion sort Input: n elements in arbitrary order For k = 2, …, n –compare elements in position k and position k-1 if elements are unordered, swap them –compare elements in position k-1 and position k-2 if elements are unordered, swap them –continue until you compare ordered elements or all elements have been swapped once elements are sorted, they remain sorted relative to each other Output: n elements in sorted order
6
Insertion sort k=18167 First element is sorted k=28167 Compare 1 and 8 1867 Swap 1 and 8 1867 First two elements are sorted k=31867 Compare 6 and 8 1687 Swap 6 and 8 1687 Compare 6 and 1 1687 First three elements are sorted k=41687 Compare 7 and 8 1678 Swap 7 and 8 1678 Compare 7 and 6 1678 All elements are sorted
7
Worst case behavior At each step k –compare element in position k with previous elements until first k elements are in sorted order In the worst case, we compare each element with all of the previous elements –at step 2 we make 1 comparison –at step 3 we make 2 comparisons –at step n we make n-1 comparisons Worst case behavior occurs when the array is in reverse sorted order …
8
Insertion sort – worst case k=18632 First element is sorted k=28632 Compare 6 and 8 6832 Swap 6 and 8 k=36832 Compare 3 and 8 6382 Swap 3 and 8 6382 Compare 3 and 6 3682 Swap 3 and 6 k=43682 Compare 2 and 8 3628 Swap 2 and 8 3628 Compare 2 and 6 3268 Swap 2 and 6 3268 Compare 2 and 3 2368 Swap 2 and 3 2368 All elements are sorted
9
Best case behavior What if the elements are already sorted? How many comparisons per element will be made by insertion sort? 135679
10
Insertion sort – best case k=1135679 First element is sorted k=2135679 Compare 3 and 1 135679 First two elements are sorted k=3135679 Compare 5 and 3 135679 First three elements are sorted k=4135679 Compare 6 and 5 135679 First four elements are sorted k=5135679 Compare 7 and 6 135679 First five elements are sorted k=6135679 Compare 9 and 7 135679 All elements are sorted
11
Comparisons in insertion sort Worst case –element k requires (k-1) comparisons –total number of comparisons: 0+1+2+ … + (n-1) = ½ (n)(n-1) = ½ (n 2 -n) Best case –elements 2 through n each require one comparison –total number of comparisons: 1+1+1+ … + 1 = n-1 (n-1) times
12
The divide-and-conquer approach Insertion sort uses an incremental approach –puts elements in correct place one at a time We can design more efficient sorting algorithms using the divide-and-conquer approach: –Divide the problem into a number of subproblems –Conquer the subproblems by solving them recursively until the subproblems are small enough to solve directly –Merge the solutions for the subproblems into the solution for the original problem
13
Mergesort Divide-and-conquer sorting algorithm Given a list of n elements in arbitrary order –Divide the list of n elements into two sub-lists of n/2 elements –Conquer each sub-list by sorting it recursively –Merge the solutions to all sub-lists into a single sorted list of n elements
14
Mergesort 27 10 12 20 27 1012 20 1220 27 10 10 2712 20 10 12 20 27 divide merge
15
Merging Idea: –suppose you have an unsorted deck of cards –you split the deck in half, give half to your friend to sort and sort the other half yourself –now you have two half-decks, each sorted –how do you combine them into a single sorted deck?
16
Merging two sorted lists 10 2712 2010 10 27 12 20 10 12 10 12 20 10 12 20 27 result of mergesecond listfirst list
17
Comparisons in mergesort Dividing a list of elements requires no comparisons –just compute midpoint Merging two lists of size m requires at least m and at most 2m - 1 comparisons –one comparison at each step of the merge –elements in result list are not compared again –add at least one element to result at each step Total number of comparisons is the sum of the number of comparisons made at each merge
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.