0% found this document useful (0 votes)
13 views

Chapter # 6 Sorting Algorithms

Uploaded by

MURTAZA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Chapter # 6 Sorting Algorithms

Uploaded by

MURTAZA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 27

6/11/2019

Analysis of Algorithm

Department of Computer Science &


Software Engineering
University of Swat

CS Course : Analysis of Algorithm


Course Instructor : Muzammil Khan

Chapter 6

Sorting Algorithms
(Advanced Sorting Algorithms)

1
6/11/2019

Sorting Algorithms - Classification


 The sorting algorithms are classified into two categories
 On the basis of underlying procedure used

 Sorting by Comparison
 These are based on comparison of keys
 The method has general applicability
 Examples are selection sort, quick sort

 Sorting by Counting
 These depend on the characteristics of individual data items
 The sort method has limited application
 Examples include radix sort, bucket sort,
Analysis of Algorithm

Sorting by Comparison
 The Sorting by Comparison method sorts input
 By comparing pairs of keys in the input.
 Elementary Algorithms
 Are inefficient but easy to implement
 Their running times are θ(n2)
 Common algorithms are
 Insertion sort, Exchange sort, Selection sort
 Advanced Algorithms
 Advanced algorithms are efficient
 Implementations are usually based on recursive function calls
 Their running times are θ(n lg n)
 The typical advanced algorithms include
 Merge sort, Quick sort, Heap sort
Analysis of Algorithm

2
6/11/2019

Sorting Algorithms
Algorithm Design Approach Sort in Place Complexity

Insertion Sort Incremental Yes (n2)

Selection Sort Incremental Yes (n2)

Bubble Sort Incremental Yes (n2)

Merge Sort Divide & Conquer No Let’s see !!

Analysis of Algorithm

Divide and Conquer Approach


 Divide the problem into a number of sub-problems
 D(n) - Time to divide a problem into sub-problems
 Conquer the sub-problems by solving them recursively
 aT(n/b) - Time to conquer each sub-problem
 If sub-problem sizes are small, they can be solved in a
straightforward manner
 Combine the solution of sub-problems into the solution for
the original problem
 C(n) – Time to combine sub-problems
 Total time
 T(n) = aT(n/b) + D(n) + C(n)
Analysis of Algorithm

3
6/11/2019

Merge Sort

Merge Sort Idea


 To sort an array A[p ... r]
 Divide
 Divide the n-element sequence to be sorted into two
subsequences of n/2 elements each
 When the size of the sequences is 1 there is nothing more to do
 Conquer
 Sort the subsequences recursively using merge sort
 Starting from lower level to upper level (up-to whole solution)
 Combine
 Merge the two sorted subsequences
Analysis of Algorithm

4
6/11/2019

Merge Sort - Illustration

Analysis of Algorithm

Merge Sort
1 2 3 4 5 6 7 8

5 2 4 7 1 3 2 6

p q r
MERGE-SORT(A, p, r)
if p < r ►Check for base case
then q ← (p + r)/2 ►Divide
MERGE-SORT(A, p, q) ►Conquer 1st half (Recursively sort)
MERGE-SORT(A, q + 1, r) ►Conquer 2nd half (Recursively sort)
MERGE(A, p, q, r) ►Combine the 2 halves

 Initial call: MERGE-SORT(A, 1, n)


Analysis of Algorithm

5
6/11/2019

1 2 3 4 5 6 7 8

Merge Sort Calls 5 7 3 8 2 6 1 4

Merge-Sort(A, 1, 8) Here p = 1, r = 8 & q = 4 as p < r


MS(A, 1, 4)
MS(A, 1, 2)
MS(A, 1, 1) ►5
MS(A, 2, 2) ►7
M(A, 1, 1, 2) ► 5, 7
MS(A, 3, 4)
MS(A, 3, 3) ►3
MS(A, 4, 4) ►8
M(A, 3, 3, 4) ► 3, 8
M(A, 1, 2, 4) ► 3, 5, 7, 8
MS(A, 5, 8) ► Next slide
Analysis of Algorithm

1 2 3 4 5 6 7 8

Merge Sort Calls (Cont...) 5 7 3 8 2 6 1 4

Merge-Sort(A, 1, 8)
MS(A, 5, 8)
MS(A, 5, 6)
MS(A, 5, 5) ►2
MS(A, 6, 6) ►6
M(A, 5, 5, 6) ► 2, 6
MS(A, 7, 8)
MS(A, 7, 7) ►1
MS(A, 8, 8) ►4
M(A, 7, 7, 8) ► 1, 4
M(A, 5, 6, 8) ► 1, 2, 4, 6
M(A, 1, 4, 8) ► 1, 2, 3, 4, 5, 6, 7, 8 ► Sorted
Analysis of Algorithm

6
6/11/2019

Merge Sort (Cont...)


1 2 3 4 5 6 7 8
 Divide 5 2 q=4
4 7 1 3 2 6

1 2 3 4 5 6 7 8

5 2 4 7 1 3 2 6

1 2 3 4 5 6 7 8

5 2 4 7 1 3 2 6

1 2 3 4 5 6 7 8

5 2 4 7 1 3 2 6

Analysis of Algorithm

Merge Sort (Cont...)


1 2 3 4 5 6 7 8
 Conquer & Merge 1 2 2 3 4 5 6 7

1 2 3 4 5 6 7 8

2 4 5 7 1 2 3 6

1 2 3 4 5 6 7 8

2 5 4 7 1 3 2 6

1 2 3 4 5 6 7 8

5 2 4 7 1 3 2 6
Analysis of Algorithm

7
6/11/2019

p q r
1 2 3 4 5 6 7 8

5 2 4 7 1 3 2 6
Merge Sort - Pseudocode
n1 n2

p q

L 2 4 5 7 
q +1 r

R 1 2 3 6 

Analysis of Algorithm

Merge Sort – Recurrence Relation


 Recall for Divide and Conquer algorithms
T(n) = aT(n/b) + D(n) + C(n)

 Here a=2, and if we assume n is a power of 2, then each


divide step leads to sub-arrays of size n/2

 D(n)=θ(1) ► division take constant time


 C(n)= θ(n) ► combining n elements

 T(n)=2T(n/2)+θ(n)
Analysis of Algorithm

8
6/11/2019

Merge Sort – Worst-Case Scenario

Analysis of Algorithm

Merge Sort – Worst-Case Scenario


Solving by Substitution Method
As T(n) = 2T(n/2)+c.n ………… (1)
Solve for T(n/2), T(n/4), T(n/8) . . .
T(n/2) = 2 T(n/4)+c.n/2
Eq (1) => T(n) = 2(2T(n/4)+c.n/2)+c.n
= 4T(n/4)+ 2.c.n/2 + c.n
= 22 T(n/22)+2c.n ……….. (2)
Now T(n/4)
T(n/4) = 2T(n/8)+c.n/4
Eq (2) => T(n) = 22 (2T(n/8)+c.n/4)+2c.n
= 23 T(n/23)+4.c.n/4+2cn
= 23 T(n/23)+3c.n
Analysis of Algorithm

9
6/11/2019

Merge Sort – Worst-Case Scenario


Solving by Substitution Method (Cont...)
Similarly
T(n) = 24 T (n/24) +4c.n
If n=2i Then
T(2i) = 2iT(2i/2i)+ i c.n
= 2iT(1)+ i c.n
As T(1) = Ɵ (1) = c
So T(2i) = 2ic + ic.n
As assumed
n= 2i
i=lg2n

Analysis of Algorithm

Merge Sort – Worst-Case Scenario


Solving by Substitution Method (Cont...)
So T(n) = nc+lg2n.c.n
= cn(1+lg2n)
= cnlgn+cn

 Ignoring low order Terms and constants


 T(n) = Ɵ(nlgn)

Analysis of Algorithm

10
6/11/2019

Merge Sort
Worst, Average and Best-Case Scenario
 Worst case running time of merge sort is
 θ(nlgn)

 Average case running time of merge sort is also


 θ(nlgn)

 Best case ?

Analysis of Algorithm

Merge Sort (Cont...)


 Running time insensitive of the input

 Advantage
 Guaranteed to run in (nlgn)

 Disadvantage
 Requires extra space N

Analysis of Algorithm

11
6/11/2019

Sort Challenge 1
 Problem
 Sort a file of huge records with tiny keys

 Example application: Reorganize your MP-3 files

 Which method to use?


A. Merge sort, guaranteed to run in time  nlgn
B. Selection sort
C. Bubble sort
D. Insertion sort
E. A custom algorithm for huge records/tiny keys
Analysis of Algorithm

Solution
 Insertion sort or bubble sort?
 NO, too many exchanges

 Selection sort?
 YES, it takes linear time for exchanges

 Merge sort or custom method?


 Probably not
 Selection sort simpler, does less swaps

Analysis of Algorithm

12
6/11/2019

Sort Challenge 2
 Problem
 Sort a huge randomly-ordered file of small records

 Application: Process transaction record for a phone


company

 Which sorting method to use?


A. Bubble sort
B. Selection sort
C. Merge sort guaranteed to run in time  nlgn
D. Insertion sort
Analysis of Algorithm

Solution
 Selection sort?
 NO, always takes quadratic time
 Bubble sort?
 NO, quadratic time for randomly-ordered keys
 Insertion d?
 NO, quadratic time for randomly-ordered keys
 Merge sort?
 YES, it is designed for this problem
Analysis of Algorithm

13
6/11/2019

Sort Challenge 3
 Problem
 Sort a file that is already almost in order
 Applications
 Re-sort a huge database after a few changes
 Double check that someone else sorted a file
 Which sorting method to use?
A. Merge sort, guaranteed to run in time  nlgn
B. Selection sort
C. Bubble sort
D. A custom algorithm for almost in-order files
E. Insertion sort
Analysis of Algorithm

Solution
 Selection sort?
 NO, always takes quadratic time
 Bubble sort?
 NO, bad for some definitions of “almost in order”
 Example:
 BCDEFGHIJKLMNOPQRSTUVWXYZA
 Insertion sort?
 YES, takes linear time for most definitions of “almost in
order”
 Merge sort or custom method?
 Probably not: insertion sort simpler and faster
Analysis of Algorithm

14
6/11/2019

Quick Sort

Quick Sort
 Design Approach
 Divide and Conquer
 Procedure take place in two phases
 Given array
 Phase #1 (Divide)
 An array element is chosen as Pivot

 The array is partitioned into two sub-arrays (by pivot value)


 All elements on the left are less then pivot value and
 All elements on the right are greater or equal to pivot value

Analysis of Algorithm

15
6/11/2019

Quick Sort (Cont...)

 Phase #2 (Conquer)
 The left and right sub-arrays are sorted recursively

Analysis of Algorithm

Quick Sort Pseudo code


QUICKSORT(A, p, r)
1. if p < r ►Check for base case
2. then q ← PARTITION(A, p, r) ►Create Partitions
3. QUICKSORT(A, p, q-1) ►Sort left side of the pivot
4. QUICKSORT(A, q+1, r) ►Sort right side of the pivot

Analysis of Algorithm

16
6/11/2019

Quick Sort Pseudo code (Cont...)


PARTITION (A, p, r) Description
1. x ← A[r] ► Need to addddd description
2. i ← p-1
3. for j ← p to r-1
4. do if A[j] <= x
5. then i ← i+1
6. exchange A[i] ↔ A[j]
7. exchange A[i+1] ↔ A[r]
8. return i+1

Analysis of Algorithm

Analysis of Quick Sort


 Running time of Quick sort depends on
 Whether partition is balanced or unbalanced
 This in turn depends on elements (pivot) used for
partitioning

Analysis of Algorithm

17
6/11/2019

Quick Sort – Best-Case Scenario


 In best case
 The array is partitioned into two nearly equal sub-array

 Recurrence relation for best case running time is

Analysis of Algorithm

Quick Sort – Best-Case Scenario (Cont...)

Analysis of Algorithm

18
6/11/2019

Quick Sort – Worst-Case Scenario


 The worst case arises
 When the given array is in presorted
 The partitioned result in a single right partition
 The left partition is empty
 In this case
 The array is scanned from left to right until
 The pointer cross over

 As shown
 Next slide

Analysis of Algorithm

Quick Sort – Worst-Case Scenario (Cont...)

Analysis of Algorithm

19
6/11/2019

Quick Sort – Worst-Case Scenario (Cont...)


 The worst case arises
 When the given array is in reverse sorted
 The partitioned result in a single left partition
 The right partition is empty
 In this case
 The array is scanned from left to right until
 The pointer cross over

 As shown
 Next slide

Analysis of Algorithm

Quick Sort – Worst-Case Scenario (Cont...)

Analysis of Algorithm

20
6/11/2019

Quick Sort – Worst-Case Scenario (Cont...)


 Consider the case where left partition is empty

 The recurrence relation for worst case

 Since left partition is empty, recurrence simplifies to

 Same recurrence applies when right partition is empty


Analysis of Algorithm

Quick Sort – Worst-Case Scenario (Cont...)


 The recurrence

 Can be solved by iteration method


 Iteration yields the solution as

 The worst case running time of worst case is


 Θ(n2)
Analysis of Algorithm

21
6/11/2019

Quick Sort – Average-Case Scenario


 In average case, we assume that
 The pivot can be any array element of size n
 By probabilistic analysis
 1/n is the probability of any array element to be pivot

 As shown
 Next slide

Analysis of Algorithm

Quick Sort – Average-Case Scenario (Cont...)

Analysis of Algorithm

22
6/11/2019

Quick Sort – Average-Case Scenario (Cont...)

 By summing over running time for all probable locations of


pivot and associated cost
 The Recurrence

Analysis of Algorithm

Quick Sort – Average-Case Scenario (Cont...)

Analysis of Algorithm

23
6/11/2019

Quick Sort – Average-Case Scenario (Cont...)

Analysis of Algorithm

Quick Sort – Average-Case Scenario (Cont...)

Analysis of Algorithm

24
6/11/2019

Pivot Selection
 Pivot influence performance of quick sort algorithm
 There are four choices
 Left-most element
 The 1st element is chosen as pivot
 There is chance of bad partitioning

 Right-most element
 The last element is chosen as pivot
 There is chance of bad partitioning

Analysis of Algorithm

Pivot Selection
 Medium element
 The middle element is chosen as pivot

 Random element
 An element is selected randomly
 The random selection reduces/ minimize the chances of bad
partitioning

Analysis of Algorithm

25
6/11/2019

Randomized Quick Sort

Analysis of Algorithm

Heap Sort

26
6/11/2019

For MS
 Heap sort
 Count sort
 Radix sort
 Bucket sort

 Include in the lectures

Analysis of Algorithm

27

You might also like