Analysis of Algorithms CS 477/677 Linear Sorting Instructor: George Bebis ( Chapter 8 )

Slides:



Advertisements
Similar presentations
Sorting in linear time (for students to read) Comparison sort: –Lower bound:  (nlgn). Non comparison sort: –Bucket sort, counting sort, radix sort –They.
Advertisements

Sorting in Linear Time Comp 550, Spring Linear-time Sorting Depends on a key assumption: numbers to be sorted are integers in {0, 1, 2, …, k}. Input:
Non-Comparison Based Sorting
CSE 3101: Introduction to the Design and Analysis of Algorithms
MS 101: Algorithms Instructor Neelima Gupta
1 Sorting in Linear Time How can we do better?  CountingSort  RadixSort  BucketSort.
Sorting in linear time Comparison sort: –Lower bound:  (nlgn). Non comparison sort: –Bucket sort, counting sort, radix sort –They are possible in linear.
Mudasser Naseer 1 5/1/2015 CSC 201: Design and Analysis of Algorithms Lecture # 9 Linear-Time Sorting Continued.
Counting Sort Non-comparison sort. Precondition: n numbers in the range 1..k. Key ideas: For each x count the number C(x) of elements ≤ x Insert x at output.
Lower bound for sorting, radix sort COMP171 Fall 2005.
1 Sorting Problem: Given a sequence of elements, find a permutation such that the resulting sequence is sorted in some order. We have already seen: –Insertion.
Lower bound for sorting, radix sort COMP171 Fall 2006.
Lecture 5: Linear Time Sorting Shang-Hua Teng. Sorting Input: Array A[1...n], of elements in arbitrary order; array size n Output: Array A[1...n] of the.
CS 253: Algorithms Chapter 8 Sorting in Linear Time Credit: Dr. George Bebis.
Comp 122, Spring 2004 Keys into Buckets: Lower bounds, Linear-time sort, & Hashing.
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu.
Comp 122, Spring 2004 Lower Bounds & Sorting in Linear Time.
Analysis of Algorithms CS 477/677 Midterm Exam Review Instructor: George Bebis.
Lecture 5: Master Theorem and Linear Time Sorting
CSE 326: Data Structures Sorting Ben Lerner Summer 2007.
Analysis of Algorithms CS 477/677
Data Structures, Spring 2004 © L. Joskowicz 1 Data Structures – LECTURE 5 Linear-time sorting Can we do better than comparison sorting? Linear-time sorting.
Lower Bounds for Comparison-Based Sorting Algorithms (Ch. 8)
Computer Algorithms Lecture 11 Sorting in Linear Time Ch. 8
Data Structure & Algorithm Lecture 7 – Linear Sort JJCAO Most materials are stolen from Prof. Yoram Moses’s course.
Sorting in Linear Time Lower bound for comparison-based sorting
CSE 373 Data Structures Lecture 15
1 Sorting in O(N) time CS302 Data Structures Section 10.4.
Linear Sorts Chapter 12.3, Last Updated: :39 AM CSE 2011 Prof. J. Elder Linear Sorts?
David Luebke 1 10/13/2015 CS 332: Algorithms Linear-Time Sorting Algorithms.
CSC 41/513: Intro to Algorithms Linear-Time Sorting Algorithms.
Introduction to Algorithms Jiafen Liu Sept
The Selection Problem. 2 Median and Order Statistics In this section, we will study algorithms for finding the i th smallest element in a set of n elements.
Sorting Fun1 Chapter 4: Sorting     29  9.
Analysis of Algorithms CS 477/677
Fall 2015 Lecture 4: Sorting in linear time
Mudasser Naseer 1 11/5/2015 CSC 201: Design and Analysis of Algorithms Lecture # 8 Some Examples of Recursion Linear-Time Sorting Algorithms.
COSC 3101A - Design and Analysis of Algorithms 6 Lower Bounds for Sorting Counting / Radix / Bucket Sort Many of these slides are taken from Monica Nicolescu,
1 Algorithms CSCI 235, Fall 2015 Lecture 17 Linear Sorting.
Analysis of Algorithms CS 477/677 Lecture 8 Instructor: Monica Nicolescu.
CS6045: Advanced Algorithms Sorting Algorithms. Heap Data Structure A heap (nearly complete binary tree) can be stored as an array A –Root of tree is.
Linear Sorting. Comparison based sorting Any sorting algorithm which is based on comparing the input elements has a lower bound of Proof, since there.
19 March More on Sorting CSE 2011 Winter 2011.
Lecture 5 Algorithm Analysis Arne Kutzner Hanyang University / Seoul Korea.
CS6045: Advanced Algorithms Sorting Algorithms. Sorting So Far Insertion sort: –Easy to code –Fast on small inputs (less than ~50 elements) –Fast on nearly-sorted.
David Luebke 1 7/2/2016 CS 332: Algorithms Linear-Time Sorting: Review + Bucket Sort Medians and Order Statistics.
Lower Bounds & Sorting in Linear Time
Sorting.
Introduction to Algorithms
Lecture 5 Algorithm Analysis
Linear Sorting Sections 10.4
Keys into Buckets: Lower bounds, Linear-time sort, & Hashing
Ch8: Sorting in Linear Time Ming-Te Chi
Lecture 5 Algorithm Analysis
Sorting in linear time (for students to read)
Linear Sort "Our intuition about the future is linear. But the reality of information technology is exponential, and that makes a profound difference.
CS200: Algorithm Analysis
Linear Sorting Sorting in O(n) Jeff Chastine.
Linear Sort "Our intuition about the future is linear. But the reality of information technology is exponential, and that makes a profound difference.
Lower Bounds & Sorting in Linear Time
Linear Sorting Section 10.4
Linear-Time Sorting Algorithms
Lecture 5 Algorithm Analysis
Lower bound for sorting, radix sort
Algorithms CSCI 235, Spring 2019 Lecture 18 Linear Sorting
Chapter 8: Overview Comparison sorts: algorithms that sort sequences by comparing the value of elements Prove that the number of comparison required to.
David Kauchak cs302 Spring 2012
CS 583 Analysis of Algorithms
Lecture 5 Algorithm Analysis
Presentation transcript:

Analysis of Algorithms CS 477/677 Linear Sorting Instructor: George Bebis ( Chapter 8 )

2 How Fast Can We Sort?

3 Insertion sort: O(n 2 ) Bubble Sort, Selection Sort: Merge sort: Quicksort: What is common to all these algorithms? –These algorithms sort by making comparisons between the input elements  (n 2 )  (nlgn)  (nlgn) - average

4 Comparison Sorts Comparison sorts use comparisons between elements to gain information about an input sequence  a 1, a 2, …, a n  Perform tests: a i a j to determine the relative order of a i and a j For simplicity, assume that all the elements are distinct

5 Lower-Bound for Sorting Theorem: To sort n elements, comparison sorts must make  (nlgn) comparisons in the worst case.

6 Decision Tree Model Represents the comparisons made by a sorting algorithm on an input of a given size. –Models all possible execution traces –Control, data movement, other operations are ignored –Count only the comparisons node leaf:

7 Example: Insertion Sort

8 Worst-case number of comparisons? Worst-case number of comparisons depends on: –the length of the longest path from the root to a leaf (i.e., the height of the decision tree)

9 Lemma Any binary tree of height h has at most Proof: induction on h Basis: h = 0  tree has one node, which is a leaf 2 0 = 1 Inductive step: assume true for h-1 –Extend the height of the tree with one more level –Each leaf becomes parent to two new leaves No. of leaves at level h = 2  (no. of leaves at level h-1 ) = 2  2 h-1 = 2 h 2 h leaves h-1 h

10 What is the least number of leaves in a Decision Tree Model? All permutations on n elements must appear as one of the leaves in the decision tree: At least n! leaves n! permutations

11 Lower Bound for Comparison Sorts Theorem: Any comparison sort algorithm requires  (nlgn) comparisons in the worst case. Proof: How many leaves does the tree have? –At least n! (each of the n! permutations if the input appears as some leaf)  n! –At most 2 h leaves  n! ≤ 2 h  h ≥ lg(n!) =  (nlgn) We can beat the  (nlgn) running time if we use other operations than comparing elements with each other! h leaves

12 Proof (note: d is the same as h)

13 Counting Sort Assumptions: –Sort n integers which are in the range [0... r] –r is in the order of n, that is, r=O(n) Idea: –For each element x, find the number of elements x –Place x into its correct position in the output array output array

14 Step 1 (i.e., frequencies)

15 Step 2 (i.e., cumulative sums)

16 Algorithm Start from the last element of A (i.e., see hw) Place A[i] at its correct place in the output array Decrease C[A[i]] by one

17 Example A C C B C B C B C B C 8 0 (frequencies) (cumulative sums)

18 Example (cont.) A B C B C B C B

19 COUNTING-SORT Alg.: COUNTING-SORT(A, B, n, k) 1.for i ← 0 to r 2. do C[ i ] ← 0 3.for j ← 1 to n 4. do C[A[ j ]] ← C[A[ j ]] C[i] contains the number of elements equal to i 6.for i ← 1 to r 7. do C[ i ] ← C[ i ] + C[i -1] 8. C[i] contains the number of elements ≤ i 9.for j ← n downto do B[C[A[ j ]]] ← A[ j ] 11. C[A[ j ]] ← C[A[ j ]] - 1 1n 0k A C 1n B j

20 Analysis of Counting Sort Alg.: COUNTING-SORT(A, B, n, k) 1.for i ← 0 to r 2. do C[ i ] ← 0 3.for j ← 1 to n 4. do C[A[ j ]] ← C[A[ j ]] C[i] contains the number of elements equal to i 6.for i ← 1 to r 7. do C[ i ] ← C[ i ] + C[i -1] 8. C[i] contains the number of elements ≤ i 9.for j ← n downto do B[C[A[ j ]]] ← A[ j ] 11. C[A[ j ]] ← C[A[ j ]] - 1  (r)  (n)  (r)  (n) Overall time:  (n + r)

21 Analysis of Counting Sort Overall time:  (n + r) In practice we use COUNTING sort when r = O(n)  running time is  (n) Counting sort is stable Counting sort is not in place sort

22 Radix Sort Represents keys as d-digit numbers in some base-k e.g., key = x 1 x 2...x d where 0≤x i ≤k-1 Example: key=15 key 10 = 15, d=2, k=10 where 0≤x i ≤9 key 2 = 1111, d=4, k=2 where 0≤x i ≤1

23 Radix Sort Assumptions d=Θ(1) and k =O(n) Sorting looks at one column at a time –For a d digit number, sort the least significant digit first –Continue sorting on the next least significant digit, until all digits have been sorted –Requires only d passes through the list

24 RADIX-SORT Alg.: RADIX-SORT (A, d) for i ← 1 to d do use a stable sort to sort array A on digit i 1 is the lowest order digit, d is the highest-order digit

25 Analysis of Radix Sort Given n numbers of d digits each, where each digit may take up to k possible values, RADIX- SORT correctly sorts the numbers in  (d(n+k)) –One pass of sorting per digit takes  (n+k) assuming that we use counting sort –There are d passes (for each digit)

26 Correctness of Radix sort We use induction on number of passes through each digit Basis: If d = 1, there’s only one digit, trivial Inductive step: assume digits 1, 2,..., d-1 are sorted –Now sort on the d -th digit –If a d < b d, sort will put a before b : correct a < b regardless of the low-order digits –If a d > b d, sort will put a after b : correct a > b regardless of the low-order digits –If a d = b d, sort will leave a and b in the same order (stable!) and a and b are already sorted on the low-order d-1 digits

27 Bucket Sort Assumption: –the input is generated by a random process that distributes elements uniformly over [0, 1) Idea: –Divide [0, 1) into n equal-sized buckets –Distribute the n input values into the buckets –Sort each bucket (e.g., using quicksort) –Go through the buckets in order, listing elements in each one Input: A[1.. n], where 0 ≤ A[i] < 1 for all i Output: elements A[i] sorted Auxiliary array: B[0.. n - 1] of linked lists, each list initially empty

28 Example - Bucket Sort /.72 /.23 / /.68 /.39 / / / / / A B

29 Example - Bucket Sort /.78 /.26 / /.68 /.39 / / / / / / Concatenate the lists from 0 to n – 1 together, in order

30 Correctness of Bucket Sort Consider two elements A[i], A[ j] Assume without loss of generality that A[i] ≤ A[j] Then  nA[i]  ≤  nA[j]  –A[i] belongs to the same bucket as A[j] or to a bucket with a lower index than that of A[j] If A[i], A[j] belong to the same bucket: –sorting puts them in the proper order If A[i], A[j] are put in different buckets: –concatenation of the lists puts them in the proper order

31 Analysis of Bucket Sort Alg.: BUCKET-SORT(A, n) for i ← 1 to n do insert A[i] into list B[  nA[i]  ] for i ← 0 to n - 1 do sort list B[i] with quicksort sort concatenate lists B[0], B[1],..., B[n -1] together in order return the concatenated lists O(n)  (n) O(n)  (n)

32 Radix Sort Is a Bucket Sort

33 Running Time of 2 nd Step

34 Radix Sort as a Bucket Sort

35 Effect of radix k 4

36 Problems You are given 5 distinct numbers to sort. Describe an algorithm which sorts them using at most 6 comparisons, or argue that no such algorithm exists.

37 Problems Show how you can sort n integers in the range 1 to n 2 in O(n) time.

38 Conclusion Any comparison sort will take at least nlgn to sort an array of n numbers We can achieve a better running time for sorting if we can make certain assumptions on the input data: –Counting sort: each of the n input elements is an integer in the range [ 0... r] and r=O(n) –Radix sort: the elements in the input are integers represented with d digits in base-k, where d=Θ(1) and k =O(n) –Bucket sort: the numbers in the input are uniformly distributed over the interval [0, 1)