Sorting Algorithms

Sorting Algorithms

Sorting Algorithms Peter Tinoˇ [email protected], www.cs.bham.ac.uk/∼pxt School of Computer Science University of Birmingham, UK Sorting Algorithms – p.1/11 Sorting Assume an ordered set A - e.g. there is a natural (linear) order defined on the elements of the set. Examples: - {A, B, C, ..., Z}, A<B<C...<Z - ℜ, usual order x<y We are given a (possibly long) list (sequence) S of elements from A. Need to permute S so that the elements are in non-decreasing (non-increasing) order. Important for a variety of algorithms operating on S. We will go through some of the suggestions of how to do this (efficiently). Sorting Algorithms – p.2/11 Let’s start simple... Insertion Sort In each iteration: - remove one element from the list - find its location within the sorted list so far - insert it there - repeat until no input elements remain. sorted so far, shifted by 1 position → 7,4,2,8,3,1,5,6 7, x,2,8,3,1,5,6 removed 4 4, 7, 2, 8, 3, 1, 5, 6 insert to expand the so-far-sorted list 4, 7, x,8,3,1,5,6 removed 2 2, 4, 7, 8, 3, 1, 5, 6 insert to expand the so-far-sorted list 2, 4, 7, x,3,1,5,6 removed 8 2,4,7,8, 3, 1, 5, 6 no shift-and-insert action needed here 2,4,7,8, x,1,5,6 removed 3 2, 3, 4, 7, 8, 1, 5, 6 insert to expand the so-far-sorted list etc. Sorting Algorithms – p.3/11 Insertion Sort Abstract representation: ≤ a, >a, a, unsorted elements ≤ a, >a, x, unsorted elements ≤ a, a, >a, unsorted elements Think of the best/worst cases (number of steps needed). Sorting Algorithms – p.4/11 Insertion Sort Best case: already sorted - 1,2,3,4,5,6,7,8 Why? No shift-and-insert actions needed. The first element from unsorted items is compared only with the right-most element of the sorted items. Worst case: reverse order - 8,7,6,5,4,3,2,1 Why? Many shift-and-insert actions are needed. The first element from unsorted items is always smaller then sorted items. Sorting Algorithms – p.5/11 "Big O" notation (computational complexity) Big O notation describes limiting behavior of a function ("order" of the function). It characterises functions with respect to their "growth rates". The idea is that different functions with the same growth rate get represented by the same O notation. What does it mean to write f(n) ∈ O(g(n))? There is a constant c > 0 and some n∗, after which f(n) <c · g(n). In other words, for all n>n∗, we have f(n) <c · g(n). Can you determine O notation for the number of steps Insertion Sort needs in the best/worst cases (lists of size n). Sorting Algorithms – p.6/11 Insertion Sort (computational complexity) Best case: already sorted - 1,2,3,4,5,6,7,8 What is the number of steps required? [O(n)] No shift-and-insert actions needed. The first element from unsorted items is compared only with the right-most element of the sorted items. Worst case: reverse order - 8,7,6,5,4,3,2,1 What is the number of steps required? [O(n2)] Many shift-and-insert actions are needed. The first element from unsorted items is always smaller then sorted items. N comparisons + 1+2+3+ ... +(n − 1) shifts 1+2+3+ ... + n = n(n + 1)/2 operations Sorting Algorithms – p.7/11 Selection Sort sorted so far, unsorted, min element of unsorted In each iteration: - find min element from unsorted list - swap it with the left-most unsorted element - repeat until unsorted list is empty. 7,4,2,8,3,1,5,6 7, 4, 2, 8, 3, 1,5,6 1,4,2,8,3, 7,5,6 swapped 7 with 1 1,4,2,8,3,7,5,6 1, 4, 2,8,3,7,5,6 1, 2, 4,8,3,7,5,6 swapped 4 with 2 1, 2,4,8,3,7,5,6 1, 2, 4, 8, 3,7,5,6 1, 2, 3, 8, 4,7,5,6 swapped 4 with 3 1, 2, 3,8,4,7,5,6 etc. Sorting Algorithms – p.8/11 Bubble Sort In each iteration: - go through the list to be sorted - for each adjacent couple - swap if not in the right order - repeat passes through the list until no more swaps are needed. couple to check, swapped couple 7,4,2,8,3,1,5,6 7, 4,2,8,3,1,5,6 4, 7,2,8,3,1,5,6 4, 7, 2,8,3,1,5,6 4, 2, 7,8,3,1,5,6 4, 2, 7, 8,3,1,5,6 noswapneeded 4, 2, 7, 8, 3,1,5,6 4, 2, 7, 3, 8,1,5,6 etc. Sorting Algorithms – p.9/11 Bubble Sort After 1st pass: 4, 2, 7, 3, 1, 5, 6, 8 Second pass: 4, 2,7,3,1,5,6,8 2, 4,7,3,1,5,6,8 2, 4, 7,3,1,5,6,8 2, 4, 7, 3,1,5,6,8 2, 4, 3, 7,1,5,6,8 2, 4, 3, 7, 1,5,6,8 2, 4, 3, 1, 7,5,6,8 2, 4, 3, 1, 7, 5,6,8 2, 4, 3, 1, 5, 7,6,8 2, 4, 3, 1, 5, 7, 6,8 2, 4, 3, 1, 5, 6, 7,8 2,4, 3,1,5, 6, 7, 8 go for the 3rd pass, etc. Sorting Algorithms – p.10/11 Comb Sort Bubble Sort has a problem - if there are many small values towards the end of list (turtles) - sorting is considerably slowed down. Why? The problem is that at each stage of sorting we can only swap two adjacent elements (if they are not in the right order). It can take a long time for a small element to propagate to the beginning of the list. Comb Sort allows the distance between the two compared elements be greater than 1 (unlike in Bubble Sort, where it is always 1). The gap between swapped elements decreases (after each pass through the list) by the shrink factor r.Typically, r = 1.3. For the i-th pass through the list the gap size is n · r−i (appropriately rounded, until it hits 1; after that it stays 1 (Bubble sort)). Sorting Algorithms – p.11/11.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    11 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us