You are on page 1of 13

DATA STRUCTURES AND

ALGORITHMS
Sorting #2
Quick Sort
In the previous part we discussed the following sorting:

1. Insertion Sort.
2. Bubble Sort.
3. Merge Sort.

In this part you will learn Quick Sort .

2
Quick Sort
Quick sort works as follows:

• The algorithm selects an element, called the pivot, in the


array.

• Divide the array into two parts such that all the elements
in the first part are less than or equal to the pivot and all
the elements in the second part are greater than the
pivot.

• Recursively apply the quick sort algorithm to the first part


and then the second part.

3
Partition pivot low high

5 2 9 3 8 4 0 1 6 7 (a) Initialize pivot, low, and high


Animation for
partition pivot low high

5 2 9 3 8 4 0 1 6 7 (b) Search forward and backward

pivot low high

5 2 1 3 8 4 0 9 6 7 (c) 9 is swapped with 1

pivot low high

5 2 1 3 8 4 0 9 6 7 (d) Continue search

pivot low high

5 2 1 3 0 4 8 9 6 7 (e) 8 is swapped with 0

pivot low high

5 2 1 3 0 4 8 9 6 7 (f) when high < low, search is over

QuickSort pivot

4 2 1 3 0 5 8 9 6 7 (g) pivot is in the right place

The index of the pivot is returned


4
Quick Sort Example

-2 1 2 2 3 3 5 6 12 14
Quick Sort Example
Quick Sort
• Quick Sort using recursive function (method that calls itself)

• Quick Sort is using Divide and Conquer algorithm.

• Quick Sort is very efficient for large data set.


Quick Sort Time
To partition an array of n elements, it takes n-1
comparisons and n moves in the worst case. So, the time
required for partition is O(n).

8
Worst-Case Time
In the worst case, each time the pivot divides the
array into one big subarray with the other empty.
The size of the big subarray is one less than the
one before divided. The algorithm requires O (n 2 )

time:
(n  1) (n  2)  ...  2  1  O(n 2 )

9
Best-Case Time
In the best case, each time the pivot divides the
array into two parts of about the same size. Let
T(n) denote the time required for sorting an array
of elements using quick sort. So,

n n
T ( n )  T ( )  T ( ) n  O ( n log n )
2 2

10
Average-Case Time
On the average, each time the pivot will not
divide the array into two parts of the same size
nor one empty part. Statistically, the sizes of the
two parts are very close. So the average time is
O(nlogn). The exact average-case analysis is
beyond the scope of this book.

11
References
1. Introduction to Java Programming and Data Structures,
comprehensive version 11th Edition, Y Daniel Liang, 2018

You might also like