Lecture 10: Quicker Sorting CS150: Computer Science

Slides:



Advertisements
Similar presentations
MATH 224 – Discrete Mathematics
Advertisements

Class 21: Imperative Programming University of Virginia cs1120 David Evans.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 13: Of On and Off Grounds Sorting.
Cs1120 Fall 2009 David Evans Lecture 16: Power Analysis.
Practice Quiz Question
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 18: The Story So Far.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 16: Quicker Sorting.
Cutler/HeadGrowth of Functions 1 Asymptotic Growth Rate.
Lecture 25 Selection sort, reviewed Insertion sort, reviewed Merge sort Running time of merge sort, 2 ways to look at it Quicksort Course evaluations.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 14: Asymptotic Growth.
Cs1120 Fall 2009 David Evans Lecture 20: Programming with State.
Cs1120 Fall 2009 David Evans Lecture 19: Stateful Evaluation.
Asymptotic Notations Iterative Algorithms and their analysis
David Evans Class 12: Quickest Sorting CS150: Computer Science University of Virginia Computer Science Rose Bush by Jacintha.
David Evans Class 13: Quicksort, Problems and Procedures CS150: Computer Science University of Virginia Computer Science.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 12: Decrypting Work Circle Fractal.
1 Time Analysis Analyzing an algorithm = estimating the resources it requires. Time How long will it take to execute? Impossible to find exact value Depends.
1 Lecture 16: Lists and vectors Binary search, Sorting.
David Evans CS588: Security and Privacy University of Virginia Computer Science Lecture 15: Complexity Notes This is selected.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 18: Think Globally, Mutate Locally.
CS 61B Data Structures and Programming Methodology July 10, 2008 David Sun.
David Evans CS200: Computer Science University of Virginia Computer Science Class 17: Mutation M. C. Escher, Day and Night.
David Evans Class 20: Quick Sorting CS200: Computer Science University of Virginia Computer Science Queen’s University,
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 12: Something about Sneezewort From.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 10: Puzzling Pegboards.
Intro to Sorting Intro to Computer Science CS1510 Dr. Sarah Diesburg.
David Evans Class 21: The Story So Far (Quicksort, Continuing Golden Ages) CS200: Computer Science University of Virginia.
Chapter 5 Algorithms (2) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 12: QuickSorting Queen’s University,
David Evans CS200: Computer Science University of Virginia Computer Science Class 16: Mutation M. C. Escher, Day and Night.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 5: Recursing on Lists.
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 9: Of On and Off Grounds Sorting Coffee.
1 Ch. 2: Getting Started. 2 About this lecture Study a few simple algorithms for sorting – Insertion Sort – Selection Sort (Exercise) – Merge Sort Show.
Big O David Kauchak cs302 Spring Administrative Assignment 1: how’d it go? Assignment 2: out soon… Lab code.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 14: P = NP?
David Evans CS150: Computer Science University of Virginia Computer Science Lecture 4: Programming with Data.
David Evans CS200: Computer Science University of Virginia Computer Science Lecture 8: Cons car cdr sdr wdr.
Lecture 4: Metacircles Eval Apply David Evans
Lecture 13: Quicksorting CS200: Computer Science
Lecture 7: List Recursion CS200: Computer Science
David Kauchak CS52 – Spring 2015
CS 2210 Discrete Structures Algorithms and Complexity
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Lecture 8: Recursion Practice CS200: Computer Science
Lecture 16: Quickest Sorting CS150: Computer Science
Lecture 6: Programming with Data CS150: Computer Science
Class 14: Intractable Problems CS150: Computer Science
Binary Search and Intro to Sorting
Lecture 11: All Sorts CS200: Computer Science University of Virginia
David Evans Lecture 9: The Great Lambda Tree of Infinite Knowledge and Ultimate Power CS200: Computer Science University.
Last Class We Covered Sorting algorithms Searching algorithms
Lecture 13: Cost of Sorts CS150: Computer Science
CS 2210 Discrete Structures Algorithms and Complexity
Lecture 22: P = NP? CS200: Computer Science University of Virginia
Big-O, Ω, ϴ Trevor Brown CSC263 Tutorial 1 Big-O, Ω, ϴ Trevor Brown
Haim Kaplan, Uri Zwick March 2018
CS200: Algorithms Analysis
Linear-Time Sorting Algorithms
Lecture 9: The Great Lambda Tree of Knowledge and Power
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Ch. 2: Getting Started.
Cs1120 Fall 2009 David Evans Lecture 10: Fracturing Fractals cs1120 Fall 2009 David Evans
David Kauchak cs161 Summer 2009
Lecture 15: Quicker Sorting CS150: Computer Science
Algorithm Analysis T(n) O() Growth Rates 5/21/2019 CS 303 – Big ‘Oh’
Lecture 11: Sorting Grounds and Bubbles
Lecture 8: Recursing Lists CS150: Computer Science
CS 2210 Discrete Structures Algorithms and Complexity
Presentation transcript:

David Evans http://www.cs.virginia.edu/evans Lecture 10: Quicker Sorting CS150: Computer Science University of Virginia Computer Science David Evans http://www.cs.virginia.edu/evans

Menu compose and n-times Measuring Work: What  really means Quicker Sorting

What does  really mean? O(x) – it is no more than x work (upper bound) (x) – work scales as x (tight bound) (x) – it is at least x work (lower bound) If O(x) and (x) are true, then (x) is true.

Meaning of O (“big Oh”) f(x) is O (g (x)) means: There is a positive constant c such that c * f(x) < g(x) for all but a finite number of x values.

O Examples x is O (x2)? 10x is O (x)? x2 is O (x)? f(x) is O (g (x)) means: There is a positive constant c such that c * f(x) < g(x) for all but a finite number of x values. x is O (x2)? Yes, c = 1 works fine. 10x is O (x)? Yes, c = .09 works fine. x2 is O (x)? No, no matter what c we pick, cx2 > x for big enough x

Lower Bound:  (Omega) f(x) is  (g (x)) means: There is a positive constant c such that c * f(x) > g(x) for all but a finite number of x values. Difference from O – this was <

Examples x is O(x) 10x is O(x) Is x2  (x)? x2 is not O(x) x is  (x) f(x) is  (g (x)) means: There is a positive constant c such that c * f(x) > g(x) for all but a finite number of x values. f(x) is O (g (x)) means: c * f(x) < g(x) Examples x is  (x) Yes, pick c = 2 10x is  (x) Yes, pick c = 1 Is x2  (x)? Yes! x is O(x) Yes, pick c = .5 10x is O(x) Yes, pick c = .09 x2 is not O(x)

Tight Bound:  (Theta) f(x) is O (g (x)) and f(x) is  (g (x)) f(x) is  (g (x)) iff: f(x) is O (g (x)) and f(x) is  (g (x))

 Examples x is/is not  (x2)? 10x is  (x) x2 is/is not  (x)? Yes, since 10x is  (x) and 10x is O(x) Doesn’t matter that you choose different c values for each part; they are independent x2 is/is not  (x)? No, since x2 is not O (x) x is/is not  (x2)? No, since x2 is not  (x)

Sorting simple-sort is (n2) (define (simple-sort cf lst) (if (null? lst) lst (let ((best (find-best cf lst))) (cons best (simple-sort cf (delete lst most)))))) (define (find-best cf lst) (insertl (lambda (c1 c2) (if (cf c1 c2) c1 c2)) lst (car lst))) simple-sort is (n2) If we double the length of the list, we amount of work sort does approximately quadruples.

Is our sort good enough? (n2) Takes over 1 second to sort 1000-length list. How long would it take to sort 1 million items? 1s = time to sort 1000 4s ~ time to sort 2000 1M is 1000 * 1000 Sorting time is n2 so, sorting 1000 times as many items will take 10002 times as long = 1 million seconds ~ 11 days (n2) Note: there are 800 Million VISA cards in circulation. It would take 20,000 years to process a VISA transaction at this rate.

Divide and Conquer sorting? simple-sort: find the lowest in the list, add it to the front of the result of sorting the list after deleting the lowest Insertion sort: insert the first element of the list in the right place in the sorted rest of the list

insertsort (define (insertsort cf lst) (if (null? lst) null (insertone cf (car lst) (insertsort cf (cdr lst)))))

insertone (define (insertone cf el lst) (if (null? lst) (list el) (if (cf el (car lst)) (cons el lst) (cons (car lst) (insertone cf el (cdr lst))))))

How much work is insertsort? (define (insertone cf el lst) (if (null? lst) (list el) (if (cf el (car lst)) (cons el lst) (cons (car lst) (insertone cf el (cdr lst)))))) (define (insertsort cf lst) (if (null? lst) null (insertone cf (car lst) (insertsort cf (cdr lst))))) How many times does insertsort evaluate insertone? Worst case? Average case? n times (once for each element) insertone is (n) insertsort is (n2)

> (insertsort < (revintsto 20)) (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) Requires 190 applications of < > (insertsort < (intsto 20)) Requires 19 applications of < > (insertsort < (rand-int-list 20)) (0 11 16 19 23 26 31 32 32 34 42 45 53 63 64 81 82 84 84 92) Requires 104 applications of <

> (simplesort < (intsto 20)) (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) Requires 210 applications of < > (simplesort < (rand-int-list 20)) (4 4 16 18 19 20 23 32 36 51 53 59 67 69 73 75 82 82 88 89)

simplesort vs. insertsort Both are (n2) worst case (reverse list) Both are (n2) average case (random) But insert-sort is about twice as fast insertsort is (n) best case (ordered list)

Can we do better? (insertone < 88 (list 1 2 3 5 6 23 63 77 89 90)) Suppose we had procedures (first-half lst) (second-half lst) that quickly divided the list in two halves?

Charge Read Tyson’s essay (before Friday) How does it relate to  (n2) How does it relate to grade inflation Don’t misinterpret it as telling you to run out and get tattoos and piercings!