LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL:...

63
LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: [email protected] Sorting

Transcript of LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL:...

Page 1: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

LEVEL II, TERM IICSE – 243

MD. MONJUR-UL-HASANLECTURER

DEPT OF CSE, CUETEMAIL: [email protected]

Sorting

Page 2: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Bubble Sort

bubble1(data, n) {

for j=1 to nfor i=1 to n - j

if data[i-1]>data[i]swap(data,i-1,i);

}

The internal loop runs n-1 times, then n-2 times, then n-3 times and so on…

What is the complexity?

2

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 3: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Analysis of Running Time

Let’s assume the swapping procedure along with the if that surrounds it run in at most k time units.

Total running time is then at most:

What is the lower bound?

)(222

)1(

)1(...21

22

1

1

nOn

kn

knn

k

ikknkkn

i

3

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 4: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

4

One Pass

Array after

Completion

of Each Pass

Page 5: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Bubble Sort

bubble1(data, n) {

for j=1 to nfor i=1 to n - j

if data[i-1]>data[i]swap(data,i-1,i);

}Question: Is this a stable sort?Question: What happens if we start this on a sorted array?Question: What happens in the following case?

a) 1 4 6 20 10b) 9 8 6 5 4 3

Calculate the number of swap for each case.

5

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 6: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Modified Bubble Sort

bubble1(data, n) {

for j=1 to nboolean movedSomething = false; //added thisfor i=1 to n - j

if data[i-1]>data[i] movedSomething = true; //added this

swap(data,i-1,i);if(!movedSomething) break; //added this

}

We detect when the array is sorted and stop in the middle.

6

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 7: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Bubble Sort

Again Answer the following

Question: Is this a stable sort?Question: What happens if we start this on a sorted array?Question: What happens in the following case?

a) 1 4 6 20 10b) 9 8 6 5 4 3

Calculate the number of swap for each case.

7

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 8: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Modified Bubble Sort

Before the modification, running time was always nearly the same but now what?

What is the best case? What is the worst case?What is the running time in each case?

Which version of bubble sort is better?

8

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 9: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Complexity of Modified Bubble Sort.

What is the worst case running time? O(n2) - The array is sorted in reverse – we don’t exit early.

What is the best case running time? Ω(n) – in the best case we start with a sorted array. Go over it once and see that nothing was moved.

9

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 10: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Selection Sort

Pseudo Code:

For i=0,1,…,n-2 Run over the array from i onwards.

Find j- the index of the minimal item. Swap the values in indexes i,j.

10

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 11: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

11

Page 12: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Running Time of selection sort

What is the worst case?

What is the best case?

Can we say something about the average case?

What is the running time in each one?

12

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 13: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Running Time of selection sort

Note first that the running time is always pretty much the same.

Finding the minimal value always requires us to go over the entire sub-array. There is no shortcut, and we never stop early.

First, we have an array of size n-1 to scan, then size n-2, then size n-2… We’ve already analyzed this pattern: Running time is O(n2). (HOW ?)

13

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 14: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Selection Sort: Analysis

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

14

Number of comparisons:(n-1) + (n-2) + ... + 3 + 2 + 1

=n * (n-1)/2

=(n² - n )/2

O(n²)

Number of exchanges (worst case):n – 1

O(n)

Overall (worst case) O(n) + O(n²) = O(n²) (‘quadratic sort‘)

Page 15: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Finding the smallest difference

The naïve way:

minimalDif(numbers,length){

diff = MAX_VALUE;for i=0 to length

for j=i+1 to lengthcurrentDiff = abs(numbers[i]-numbers[j]);if(currentDiff<diff)

diff = currentDiff;return diff;

}

Try to find a better algorithm to do this.

Page 16: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Insertion Sorting

insertSort(data, length){for i=1 to length//assume before index i the array is sorted

insert(data,i); //insert i into array 0...(i-1)}

insert(data,index) {value = data[index];I = index-1

while data[i]>value and i>=0data[i+1]=data[i]i=i-1

data[i+1] = value;}

16

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 17: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

17

Insertion Sort:

4 passes

Pass 3

Page 18: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Complexity of Insertion Sort

What is the worst case?

What is the best case?

What is the complexity in each one?

18

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

Page 19: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Insertion Sort: Analysis

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

19

Number of comparisons (worst case): (n-1) + (n-2) + ... + 3 + 2 + 1 O(n²)

Number of comparisons (best case): n –1 O(n)

Number of exchanges (worst case): (n-1) + (n-2) + ... + 3 + 2 + 1 O(n²)

Number of exchanges (best case): 0 O(1)Overall worst case: O(n²) + O(n²) = O(n²)

Page 20: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Marge Sort

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

20

Divide & Conquer AlgorithmFaster than Babble sort , Insertion sort and

selection sort.Merge Sort Tree:

Take a binary tree T Each node of T represents a recursive call of the merge

sort algorithm. We associate with each node v of T a the set of input

passed to the invocation v represents. The external nodes are associated with individual elements

of S, upon which no recursion is called.

Page 21: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

CIS 068

Merge Sort: Example

9 12 19 16 1 25 4 3

9 12 19 16 1 25 4 3

9 12 19 16 1 25 4 3

9 12 16 19 1 3 4 25

1 3 4 9 12 16 19 25

9 12 16 19 1 25 3 4

9 12 19 16 1 25 4 3

split

merge

split

Page 22: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Marge Sort

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

22

Mergesort(a, from, to) {if (from == to)

return;int mid = (from + to) / 2;

merge_sort(a, from, mid);merge_sort(a, mid+1, to);merge(a, from, to);

}

Page 23: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Marge sort (Cont)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

23

Merge(a,from,to){

mid = (from+to)/2h = I = low;j = mid+1while( j<= mid and j<=mid)

if( a[h] <=a[j])b[i] = a[h] // b is an auxiliary arrayh = h+1

else b[i] = a[j]j = j+ 1

i = i +1if(h>j)

for k = j to tob[i] = a[k] i = i+1;

else for k = h to mid

b[i] = a[k]i = i+1

for k= from to toa[k] = b[k]

}

Page 24: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Complexity and Complexity

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

24

The complexity is O(n * Log(n))

The idea is: We need Log(n) merging steps

Each merging step has complexity O(n)

Problem: Merge Sort needs extra memory !

Page 25: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Heap Sort

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

25

Knowledge Required Binary Tree Mathematics Complete Binary Tree Array Representation of Binary Tree

Some Basic A complete Binary tree have n node then it will have

ceil(n/2) leaf and floor(n/2) non leaf If we put all the node in a row level wise then each

non leaf at position I will have left child at 2*i and right child at 2*i+1 position.

If a root have only left child then all subsequent child will be leaf.

Page 26: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Heap

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

26

Heap two types: Max Heap and Min Heap

Page 27: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Heap Sort: Pseudo Code

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

27

Max-Heapify(A,i,heapsize){

l = 2*ir = l+1largest = iif l< heapsize and A[l]>A[i]

largest = lif r < heapsize and a[r]>a[largest]

largest = rif largest ≠ I

exchange a[i]a[largest]Max-Heapify(a,largest,heapsize)

}

Page 28: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

28

Page 29: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Building a Heap

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

29

Build Heap The above list is not a heap. Let’s see how to build it into a heap

function Build-Max-Heap(a, start, heapsize) {for i = floor(heapsize/2) downto 1

Max-Heapify(A,i,heapsize) }

Page 30: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Building a Heap (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

30

Page 31: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Building a Heap (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

31

Page 32: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Building a Heap (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

32

Page 33: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Building a Heap (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

33

Page 34: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Building a Heap (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

34

Now, the list becomes a heap

Page 35: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Heap Sort: Pseudo Code (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

35

function heapSort(a,length) {heapsize = lengthBuild-Max-Heap(A, heapsize)for i = length downto 2

exchange a[1] a[i]heapsize = heapsize-1Max-Heapify(A,1,heapsize)

}

Page 36: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Heap Sort: Pseudo Code (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

36

Page 37: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Lower Bound for Sorting

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

37

Theorem : any sorting algorithm based on only comparisons takes (N log N) comparisons in the worst case (worse-case input) to sort N elements.

Prove:Suppose we want to sort N distinct elementsHow many possible orderings do we have for

N elements?

Page 38: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Lower Bound for Sorting (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

38

We can have N! possible orderings e.g., the sorted output for a,b,c can be

a b c b a c a c b c a b c b a b c a

Page 39: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Lower Bound for Sorting (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

39

Any comparison-based sorting process can be represented as a binary decision tree. Each node represents a set of possible orderings,

consistent with all the comparisons that have been made

The tree edges are results of the comparisons

Page 40: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Lower Bound for Sorting (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

40

Page 41: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Lower Bound for Sorting (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

41

A different algorithm would have a different decision tree

Decision tree for Insertion Sort on 3 elements:

Page 42: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Lower Bound for Sorting (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

42

The worst-case number of comparisons used by the sorting algorithm is equal to the depth of the deepest leaf The average number of comparisons used is equal to the

average depth of the leaves

A decision tree to sort N elements must have N! leaves a binary tree of depth d has at most 2d leaves the tree must have depth at least log2 (N!)

Therefore, any sorting algorithm based on only comparisons between elements requires at least

log2(N!) comparisons in the worst case.

Page 43: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Lower Bound for Sorting (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

43

Any sorting algorithm based on comparisons between elements requires (N log N) comparisons.

Page 44: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

44

Linear time sorting

Page 45: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Linear time sorting

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

45

Can we do better (linear time algorithm) if the input has special structure (e.g., uniformly distributed, every numbers can be represented by d digits)?

Yes.

Counting sort, radix sort

Page 46: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

46

for i 1 to k ⊳ k : highest number in Ado C[i] 0

for j 1 to ndo C[A[ j]] C[A[ j]] + 1

for i 2 to kdo C[i] C[i] + C[i–1]

for j n downto 1do B[C[A[ j]]] A[ j]

C[A[ j]] C[A[ j]] – 1

Page 47: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

47

A: 4 1 3 4 3

B:

1 2 3 4 5

C:

1 2 3 4

Page 48: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

48

for i 1 to kdo C[i] 0

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 0 0 0 0

1 2 3 4

Page 49: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

49

for j 1 to ndo C[A[ j]] C[A[ j]] + 1

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 0 0 0 1

1 2 3 4

j= 1 A[j] => a[1] => 4C[A[j]] =>C[4]=> 0C[A[j]] +1=> = > 0+1

Page 50: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

50

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 1 0 0 1

1 2 3 4

for j 1 to ndo C[A[ j]] C[A[ j]] + 1j= 2

A[j] => a[2] => 1C[A[j]] =>C[1]=> 0C[A[j]] +1=> = > 0+1

Page 51: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

51

for j 1 to ndo C[A[ j]] C[A[ j]] + 1

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 1 0 1 1

1 2 3 4

j= 3 A[j] => a[3] => 3C[A[j]] =>C[3]=> 0C[A[j]] +1=> = > 0+1

Page 52: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

52

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 1 0 1 2

1 2 3 4

for j 1 to ndo C[A[ j]] C[A[ j]] + 1

j= 4 A[j] => a[4] => 4C[A[j]] =>C[4]=> 1C[A[j]] +1=> = > 1+1

Page 53: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

53

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 1 0 2 2

1 2 3 4

for j 1 to ndo C[A[ j]] C[A[ j]] + 1

j= 5 A[j] => a[5] => 3C[A[j]] =>C[3]=> 1C[A[j]] +1=> = > 1+1

Page 54: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

54

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 1 0 2 2

1 2 3 4

C': 1 1 2 2

for i 2 to kdo C[i] C[i] + C[i–1]

Page 55: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

55

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 1 0 2 2

1 2 3 4

C': 1 1 3 2

for i 2 to kdo C[i] C[i] + C[i–1]

Page 56: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

56

A: 4 1 3 4 3

B:

1 2 3 4 5

C: 1 0 2 2

1 2 3 4

C': 1 1 3 5

for i 2 to kdo C[i] C[i] + C[i–1]

Page 57: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

57

A: 4 1 3 4 3

B: 3

1 2 3 4 5

C: 1 1 3 5

1 2 3 4

C': 1 1 2 5

for j n downto 1do B[C[A[ j]]] A[ j]

C[A[ j]] C[A[ j]] – 1

j= n =>j= 5A[j] => a[5] => 3C[A[j]] =>C[3]=> 3B[C[A[j]] ] = > B[3]

Page 58: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

58

A: 4 1 3 4 3

B: 3 4

1 2 3 4 5

C: 1 1 2 5

1 2 3 4

C': 1 1 2 4

for j n downto 1do B[C[A[ j]]] A[ j]

C[A[ j]] C[A[ j]] – 1

j= n =>j= 4A[j] => a[4] => 4C[A[j]] =>C[4]=> 5B[C[A[j]] ] = > B[5]

Page 59: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

59

A: 4 1 3 4 3

B: 3 3 4

1 2 3 4 5

C: 1 1 2 4

1 2 3 4

C': 1 1 1 4

for j n downto 1do B[C[A[ j]]] A[ j]

C[A[ j]] C[A[ j]] – 1

j= n =>j= 3A[j] => a[3] => 3C[A[j]] =>C[3]=> 3B[C[A[j]] ] = > B[3]

Page 60: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

60

A: 4 1 3 4 3

B: 1 3 3 4

1 2 3 4 5

C: 1 1 1 4

1 2 3 4

C': 0 1 1 4

for j n downto 1do B[C[A[ j]]] A[ j]

C[A[ j]] C[A[ j]] – 1

j= n =>j= 2A[j] => a[2] => 1C[A[j]] =>C[1]=> 1B[C[A[j]] ] = > B[1]

Page 61: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Counting Sort (Continue)

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

61

A: 4 1 3 4 3

B: 1 3 3 4 4

1 2 3 4 5

C: 0 1 1 4

1 2 3 4

C': 0 1 1 3

for j n downto 1do B[C[A[ j]]] A[ j]

C[A[ j]] C[A[ j]] – 1

j= n =>j= 1A[j] => a[1] => 4C[A[j]] =>C[4]=> 4B[C[A[j]] ] = > B[4]

Page 62: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Complexity: Counting Sort

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

62

But it needs k Extra memory

(n)

(k)

(n)

(k)

for j 1 to ndo C[A[ j]] C[A[ j]] + 1for i 2 to kdo C[i] C[i] + C[i–1]

for j n downto 1do B[C[A[ j]]] A[ j]

C[A[ j]] C[A[ j]] – 1(n + k)

Page 63: LEVEL II, TERM II CSE – 243 MD. MONJUR-UL-HASAN LECTURER DEPT OF CSE, CUET EMAIL: MAIL@MONJUR-UL-HASAN.INFO Sorting.

Complexity: Counting Sort: Stable?

Md. Monjur-ul-hasan. Lecturer, Dept. of CSE CUET

63

A: 4 1 3 4 3

B: 1 3 3 4 4