lecture 9 : sorting techniques (part 2)bu.edu.eg/portal/uploads/computers and informatics... · 10...

40
Data Structures Lecture 9 : Sorting Techniques (Part 2) 0 Dr. Essam Halim Houssein Lecturer, Faculty of Computers and Informatics, Benha University http://bu.edu.eg/staff/esamhalim14

Upload: others

Post on 11-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

Data Structures

Lecture 9 :

Sorting Techniques (Part 2)

0

Dr. Essam Halim HousseinLecturer, Faculty of Computers and Informatics, Benha Universityhttp://bu.edu.eg/staff/esamhalim14

Page 2: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

2

Sorting Techniques

6.4. QUICK SORT

Page 3: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

3

Sorting Techniques

It is one of the widely used sorting techniques and it is also called the

partition exchange sort. Quick sort is an efficient algorithm and it

passes a very good time complexity in average case. It is an algorithm of

the divide and conquer type.

The quick sort algorithm works by partitioning the array to be sorted. And

each partitions are internally sorted recursively. In partition the first element

of an array is chosen as a key value. This key value can be the first

element of an array or the middle .

Page 4: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

4

Sorting Techniques

Page 5: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

5

Sorting Techniques

Page 6: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

6

Sorting Techniques

Quick Sort Algorithm

A be a linear array of n elements A[1], A[2], A[3], .. A[n], low represents the lower

bound pointer and up represents the upper bound pointer. Key represents the

middle element of the array.

1. Input n number of elements in an array A

2. Initialize low = 0, up = n-1, set i=low , j=up , key = arr [(low + up)/2]

3. Repeat 4, 5 , 6 while (i <= j) ,

4. Repeat while(arr [ i ] < key), i++

5. Repeat while(arr [ j ] > key) , j--

6. If (i < = j)

(a) Swap = arr [i] (b) arr [i] = arr [j] (c) arr [j] = swap

(d) i++ (e) j--

7. If (low < j) Quick sort (arr, low, j) 8. If (i < up ) Quick sort (arr, i, up)

9. Exit

Page 7: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

7

#include<iostream>

using namespace std;

void quickSort (int arr [], int low, int up) {

int i = low, j = up, tmp;

int key = arr [(low + up)/2];

while (i <= j)

{

while (arr [i] < key)

i ++;

while (arr [j] > key)

j --;

if (i <= j)

{

tmp = arr [i];

arr [i] = arr [j];

arr [j] = tmp;

i ++;

j --;

}

}

if (low < j)

quickSort (arr, low, j);

if (i < up)

quickSort(arr, i, up);

}

Page 8: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

8

void mian ()

{

int arr [10];

int i, n, low, up;

cout << "\n ---------- Quick Sort -------- \n\n";

cout << "Enter the number of Elements: ";

cin>>n;

for (i =0; i<n; i++)

cin>> arr[i];

low = 0;

up =n-1;

quickSort(arr, low, up);

cout << "\n After Sorting :\n";

for (i =0; i<n; i++)

cout << arr [i]<< endl;

}

Page 9: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

9

Sorting Techniques

6.5. MERGE SORT

http://www.ee.ryerson.ca/~courses/coe428/index.html

http://xoax.net/comp_sci/crs/algorithms/index.php

Visit this link for Algorithms Video Tutorials

Page 10: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

10

Sorting Techniques

Merging is the process of combining two or more sorted array into a

third sorted array. Divide the array into approximately n/2 sub-arrays of

size two and set the element in each sub array. Merging each sub-array

with the adjacent sub-array will get another sorted sub-array of size four.

Repeat this process until there is only one array remaining of size n.

Page 11: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

11

Sorting Techniques

Let A be an array of n number of elements to be sorted A[1], A[2] ...... A[n].

Step 1: Divide the array A into approximately n/2 sorted sub-array of size 2. i.e., the

elements in the (A [1], A [2]), (A [3], A [4]), (A [k], A [k + 1]), (A [n – 1], A [n]) sub-

arrays are in sorted order.

Step 2: Merge each pair of pairs to obtain the following list of sorted sub-array of

size 4; the elements in the sub-array are also in the sorted order.

(A [1], A [2], A [3], A [4)),................... (A [k – 1], A [k], A [k + 1], A [k + 2]), ................

(A [n – 3], A [n – 2], A [n – 1], A [n].

Step 3: Repeat the step 2 recursively until there is only one sorted array of size n.

To illustrate the merge sort algorithm consider the following array with 7 elements

[42], [33], [23], [74], [44], [67], [49]

Page 12: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

12

Sorting Techniques

Page 13: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

13

#include <iostream>

using namespace std;

int a[50];

void merge(int, int, int);

void merge_sort(int low, int high) {

int mid;

if (low < high) {

mid = (low + high) / 2;

merge_sort(low, mid);

merge_sort(mid + 1, high);

merge(low, mid, high);

}

}

Sorting Techniques

Page 14: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

14

void merge(int low, int mid, int high) {

int h, i, j, b[50], k;

h = low; i = low; j = mid + 1;

while ((h <= mid) && (j <= high)) {

if (a[h] <= a[j]) {

b[i] = a[h];

h++; }

else {

b[i] = a[j];

j++; }

i++; }

if (h > mid) {

for (k = j; k <= high; k++) {

b[i] = a[k];

i++; } }

else {

for (k = h; k <= mid; k++) {

b[i] = a[k];

i++; } }

for (k = low; k <= high; k++)

a[k] = b[k];

}

Sorting Techniques

Page 15: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

15

Sorting Techniques

6.6. HEAP

Page 16: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

16

Sorting Techniques

A heap is defined as an almost complete binary tree of n

nodes such that the value of each node is less than or

equal to the value of the father (Parent).

It can be sequentially represented as:

Page 17: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

17

Sorting Techniques

Page 18: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

18

Sorting Techniques

The root of the binary tree (i.e., the first array element) holds the

largest key in the heap. This type of heap is usually called

descending heap, as the path from the root node to a terminal

node forms an ordered list of elements arranged in descending

order. Fig. 6.1 shows a heap.

Page 19: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

19

Sorting Techniques

We can also define an ascending heap as an almost complete

binary tree in which the value of each node is greater than or equal

to the value of its father. This root node has the smallest

element of the heap. This type of heap is also called min heap.

Page 20: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

20

Sorting Techniques

6.6.1. HEAP SORT

A heap can be used to sort a set of elements. Let H be a heap with n elements

and it can be sequentially represented by an array A. Inset an element data into the

heap H as follows:

1. First place data at the end of H so that H is still a complete tree, but not

necessarily a heap.

2. Then the data be raised to its appropriate place in H so that H is finally a

heap.

To understand the concept of insertion of data into a heap is illustrated with

following two examples:

Page 21: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

21

Sorting Techniques

CREATING A HEAP

A heap H can be created from the following list of 33, 42, 67, 23, 44, 49, 74 as

illustrated below :

Step 1: Create a node to insert the first number (i.e., 33) as shown Fig 6:5

Step 2: Read 2nd element and add as the left child of 33 as shown Fig. 6.6.

Then restructure the heap if necessary.

Page 22: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

22

Sorting Techniques

Compare the 42 with its parent 33, since newly added node (i.e., 42) is

greater than 33 interchange node information as shown Fig. 6.7.

Page 23: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

23

Sorting Techniques

Step 3: Read the 3rd element and add as the right child of 42 as shown

Fig. 6.8. Then restructure the heap if necessary.

Page 24: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

24

Sorting Techniques

Compare the 67 with its parent 42, since newly added node (i.e., 67) is

greater than 42 interchange node information as shown Fig. 6.8.

Page 25: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

25

Sorting Techniques

Step 4: Read the 4th element and add as the left child of 33 as shown Fig.

6.9. Then restructure the heap if necessary.

Page 26: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

26

Sorting Techniques

Since newly added node (i.e., 23) is less than its parent 33, no

interchange.

Step 5: Read the 5th element and add as the right child of 33 as shown

Fig. 6.10. Then restructure the heap if necessary.

Page 27: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

27

Sorting Techniques

Compare the 44 with its parent 33, since newly added node (i.e., 44) is

greater than 33 interchange node information as shown Fig. 6.11.

Page 28: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

28

Sorting Techniques

Step 6: Read the 6th element and add as the left child of 42 as shown Fig.

6.12. Then restructure the heap if necessary.

Page 29: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

29

Sorting Techniques

Compare the 49 with its parent 42, since newly added node (i.e., 49) is

greater than 42 interchange node information as shown Fig. 6.13.

Page 30: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

30

Sorting Techniques

Step 7: Read the 7th element and add as the right child of 49 as shown Fig.

6.14. Then restructure the heap if necessary.

74

Page 31: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

31

Sorting Techniques

Compare the 74 with its parent 49, since newly added node (i.e., 74) is

greater than 49 interchange node information as shown Fig. 6.15.

Page 33: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

33

Sorting Techniques

INSERTING AN ELEMENT TO A HEAP

Consider the heap H in Fig. 6.1. Say we want to add a data = 55 to H.

Step 1: First we adjoin 55 as the next element in the complete tree as

shown in Fig. 6.2. Now we have to find the appropriate place for 55 in the

heap by rearranging it.

Page 34: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

34

Sorting Techniques

Step 2: Compare 55 with its parent 23. Since 55 is greater than 23,

interchange 23 and 55. Now the heap will look like as in Fig. 6.3.

Page 35: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

35

Sorting Techniques

Step 3: Compare 55 with its parent 42. Since 55 is greater than 42,

interchange 55 and 42. Now the heap will look like as in Fig. 6.4.

Step 4: Compare 55 with its new parent 74. Since 55 is less than 74, it is

the appropriate place of node 55 in the heap H. Fig. 6.4 shows the

final heap tree.

Page 36: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

36

Sorting Techniques

INSERTING AN ELEMENT INTO THE HEAP ALGORITHM

Let H be a heap with n elements stored in the array HA. LOC is the

present location of the newly added node. And PAR denotes the location

of the parent of the newly added node.

Page 37: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

37

Sorting Techniques

INSERTING AN ELEMENT ALGORITHM

1. Input the element in the array HA

2. Add new element by incrementing the size of HA, by n = n+1 and LOC = n

3. Repeat step 4 to 7 until (LOC <= 1)

4. PAR = LOC/2

5. If (data <= HA[PAR])

(a) HA[LOC] = data

(b) Exit

6. ELSE

(a) HA[LOC] = HA[PAR]

(b) LOC = PAR

7. HA[LOC] = data

8. Exit

Page 38: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

38

Sorting Techniques

DELETING THE ROOT OF A HEAP

ALGORITHM

Let H be a heap with n elements stored in the array HA. data is the item of the

node to be removed. Last gives the information about last node of H. The LOC,

left, right gives the location of Last and its left and right children as the Last

rearranges in the appropriate place in the tree.

http://www.youtube.com/watch?v=JhCe8nhndPA

http://www.youtube.com/watch?v=_9QXNFcrF4c

Page 39: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

39

Sorting Techniques

1. Input n elements in the heap HA

2. Data = HA[1]; last = HA[n] and n = n – 1

3. LOC = 1, left = 2 and right = 3

4. Repeat the steps 5, and 6 while (right <= n)

5. If (HA[right] <= HA[left])

(i) HA[LOC] = HA[left]

(ii) LOC = left

(b) Else

(i) HA[LOC] = HA[right]

(ii) LOC = right

6. left = 2 × LOC; right = left +1

7. HA[LOC] = last

8. ExitTo remove minimum element :

http://www.algolist.net/Data_structures/Binary_heap/Remove_minimum

Page 40: Lecture 9 : Sorting Techniques (Part 2)bu.edu.eg/portal/uploads/Computers and Informatics... · 10 Sorting Techniques Merging is the process of combining two or more sorted array

Any Questions?

40

Lecture 9 :

Sorting Techniques (Part 2)