LinearTime Sorting Algorithms - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

LinearTime Sorting Algorithms

Description:

Department of Computer Science & Information Engineering, National Chung Cheng ... Taking logarithms: lg (n!) h. Stirling's approximation tells us: Thus: 12 ... – PowerPoint PPT presentation

Number of Views:30
Avg rating:3.0/5.0
Slides: 31
Provided by: yaotin
Category:

less

Transcript and Presenter's Notes

Title: LinearTime Sorting Algorithms


1
Linear-Time Sorting Algorithms
Instructor Yao-Ting Huang
Bioinformatics Laboratory, Department of Computer
Science Information Engineering, National Chung
Cheng University.
2
Sorting So Far
  • Insertion sort
  • Easy to code
  • Fast on small inputs (less than 50 elements)
  • Fast on nearly-sorted inputs
  • O(n2) worst case
  • O(n2) average (equally-likely inputs) case

Algorithm 2
Algorithm 1
Time
n
3
Sorting So Far
  • Merge sort
  • Divide-and-conquer
  • Split array in half
  • Recursively sort subarrays
  • Linear-time merge step
  • O(n lg n) worst case
  • Doesnt sort in place

4
Sorting So Far
  • Heap sort
  • Uses the very useful heap data structure
  • Complete binary tree
  • Heap property parent key gt childrens keys
  • O(n lg n) worst case
  • Sorts in place

5
Sorting So Far
  • Quick sort
  • Divide-and-conquer
  • Partition array into two subarrays, recursively
    sort
  • All of first subarray lt all of second subarray
  • No merge step needed!
  • O(n lg n) average case
  • Fast in practice
  • O(n2) worst case
  • Naïve implementation worst case on sorted input
  • Address this with randomized quicksort.

6
How Fast Can We Sort?
  • We will provide a lower bound, then beat it
  • ????
  • First, an observation all of the sorting
    algorithms so far are comparison sorts.
  • The only operation used to gain ordering
    information about a sequence is the pairwise
    comparison of two elements.
  • Theorem all comparison sorts are ?(n lg n)
  • A comparison sort must do O(n) comparisons (why?)
  • What about the gap between O(n) and O(n lg n)

7
Decision Trees
  • Decision trees provide an abstraction of
    comparison sorts
  • A decision tree represents the comparisons made
    by a comparison sort. Every thing else ignored
  • (Draw examples on board)
  • What do the leaves represent?
  • How many leaves must there be?

8
Lower bound for sorting
The decision tree model
9
Decision Trees
  • Decision trees can model comparison sorts. For a
    given algorithm
  • One tree for each n
  • Tree paths are all possible execution traces
  • What is the asymptotic height of any decision
    tree for sorting n elements?
  • Answer ?(n lg n) (now lets prove it)

10
Lower Bound For Comparison Sorting
  • Theorem Any decision tree that sorts n elements
    has height ?(n lg n)
  • Whats the minimum of leaves?
  • Whats the maximum of leaves of a binary tree
    of height h?
  • Clearly the minimum of leaves is less than or
    equal to the maximum of leaves

11
Lower Bound For Comparison Sorting
  • So we have n! ? 2h
  • Taking logarithms lg (n!) ? h
  • Stirlings approximation tells us
  • Thus

12
Lower Bound For Comparison Sorting
  • So we have
  • Thus the minimum height of a decision tree is ?(n
    lg n).

13
Lower Bound For Comparison Sorts
  • Thus the time to comparison sort n elements is
    ?(n lg n)
  • Heapsort and Mergesort are asymptotically optimal
    comparison sorts
  • But the name of this lecture is Sorting in
    linear time!
  • How can we do better than ?(n lg n)?

14
Sorting In Linear Time
  • Counting sort
  • No comparisons between elements!
  • Butdepends on assumption about the numbers being
    sorted
  • We assume numbers are in the range 0.. k
  • The algorithm
  • Input A1..n, where Aj ? 0, 1, 2, , k
  • Output B1..n, sorted (notice not sorting in
    place)
  • Also Array C0..k for auxiliary storage

15
Counting Sort
  • 1 CountingSort(A, B, k)
  • 2 for i0 to k
  • 3 Ci 0
  • 4 for j1 to n
  • 5 CAj 1
  • 6 for i1 to k
  • 7 Ci Ci Ci-1
  • 8 for jn downto 1
  • 9 BCAj Aj
  • 10 CAj - 1

ci now contains the number of elements equal to
i
ci now contains the number of elements less
than or equal to i
Work through example A2 5 3 0 2 3 0 3, k 5
16
Counting Sort
ci now contains the number of elements less
than or equal to i
ci now contains the number of elements equal to
i
17
Counting Sort
  • 1 CountingSort(A, B, k)
  • 2 for i1 to k
  • 3 Ci 0
  • 4 for j1 to n
  • 5 CAj 1
  • 6 for i2 to k
  • 7 Ci Ci Ci-1
  • 8 for jn downto 1
  • 9 BCAj Aj
  • 10 CAj - 1

What will be the running time?
18
Counting Sort
  • Total time O(n k)
  • Usually, k O(n).
  • Thus counting sort runs in O(n) time.
  • But sorting is ?(n lg n)!
  • No contradiction--this is not a comparison sort
    (in fact, there are no comparisons at all!)
  • Counting sort is stable (but not in place).
  • Items with the same value appear in the output
    array in the same order as the input array.

19
Counting Sort
  • Why dont we always use counting sort?
  • Because it depends on range k of elements
  • Could we use counting sort to sort 32 bit
    integers? Why or why not?
  • Answer no, k too large (232 4,294,967,296)

20
Improvement by Radix Sort
  • In fact, each number is composed of digits.
  • The range of each digit is limited.
  • We can run counting sort on each digit.

21
Improvement by Radix Sort
  • Intuitively, you might sort on the most
    significant digit, then the second one, etc.
  • Problem lots of intermediate grouping
    information to keep track of (big numbers).
  • Key idea sort the least significant digit first
  • RadixSort(A, d)
  • for i1 to d
  • StableSort(A) on digit i

22
Radix Sort
RadixSort(A, d) for i1 to d
StableSort(A) on digit i
23
Correctness of Radix Sort
  • Induction on the number of passes
  • Assume lower-order digits j jltiare sorted
  • Show that sorting next digit i leaves array
    correctly sorted
  • If two digits at position i are different,
    ordering numbers by that digit is correct
    (lower-order digits irrelevant)
  • If they are the same, numbers are already sorted
    on the lower-order digits. Since we use a stable
    sort, the numbers stay in the right order

24
Analysis of Radix Sort
  • Counting Sort sorts n numbers on digits that
    range from 1..k .
  • Time O(n k)
  • Each pass over n numbers with d digits takes time
    O(nk), so total time O(dndk)
  • When d is constant and kO(n), takes O(n) time.

25
Radix Sort for Large Numbers
  • Problem sort 1 million 64-bit numbers,
  • Use 8-bit radix.
  • Each counting sort on 8-bit numbers ranges from 1
    to 28.
  • Can be sorted in 64/88 passes by counting sort.
  • O(8 (n 28)).

26
Radix Sort
  • In general, radix sort based on counting sort is
  • Fast
  • Asymptotically fast (i.e., O(n))
  • Simple to code
  • A good choice
  • Can radix sort be used on floating-point numbers?

27
Bucket Sort
  • Bucket sort
  • Assumption input is n real numbers in 0, 1)
  • Basic idea
  • Create n linked lists (buckets) to divide
    interval 0,1) into subintervals of size 1/n.
  • Add each input element to appropriate bucket and
    sort buckets with insertion sort.
  • Uniform input distribution ? O(1) bucket size
  • Therefore the expected total time is O(n).

28
Quiz Announcement
  • We are going to have an easy quiz on this
    Thursday.
  • The goal of having this quiz is to help you
    review the analysis we learned in these weeks.

29
????
  • ????? ??,????????????,????? ??????????????,????
    ????????
  • ??? ?

30
????
  • ????? ??,????????????,????? ??????????????,????
    ????????
  • ????????
Write a Comment
User Comments (0)
About PowerShow.com