SlideShare a Scribd company logo
Searching & Sorting
Sorting & Searching
 Searching
 Linear/Sequential Search
 Binary Search
 Sorting
 Sélection Sort
 Bubble sort
 Quick Sort
 Merge Sort
Linear/Sequential Search
 In computer science, linear search or sequential search is a method for
finding a particular value in a list that consists of checking every one of its
elements, one at a time and in sequence, until the desired one is found.
 Linear search is the simplest search algorithm.
 It is a special case of brute-force search.
 Its worst case cost is proportional to the number of elements in the list.
Sequential Search – Algorithm & Example
# Input: Array A, integer key
# Output: first index of key
in A
# or -1 if not found
Algorithm: Linear_Search
for i = 0 to last index of A:
if A[i] equals key:
return i
return -1
Search for 1 in given array 2 9 3 1 8
Comparing value of ith
index with element to be search one by
one until we get searched element or end of the array
Step 1: i=0
2 9 3 1 8
i
Step 1: i=1
2 9 3 1 8
i
Step 1: i=2
2 9 3 1 8
i
Step 1: i=3
2 9 3 1 8
i
1
Element found at ith
index, i=3
Binary Search
 If we have an array that is sorted, we can use a much more efficient
algorithm called a Binary Search.
 In binary search each time we divide array into two equal half and compare
middle element with search element.
 Searching Logic
 If middle element is equal to search element then we got that element and return that
index
 if middle element is less than search element we look right part of array
 if middle element is greater than search element we look left part of array.
Binary Search - Algorithm
Search for 6 in given array
-1 5 6 18 19 25 46 78 102 114
Key=6, No of Elements = 10, so left = 0, right=9
0 1 2 3 4 5 6 7 8 9
Index
middle index = (left + right) /2 = (0+9)/2 = 4
middle element value = a[4] = 19
Key=6 is less than middle element = 19, so right = middle – 1 = 4 – 1 = 3, left = 0
-1 5 6 18 19 25 46 78 102 114
0 1 2 3 4 5 6 7 8 9
Index
left right
left right
Step 1:
Binary Search - Algorithm
middle index = (left + right) /2 = (0+3)/2 = 1
middle element value = a[1] = 5
Key=6 is greater than middle element = 5, so left = middle + 1 =1 + 1 = 2, right = 3
-1 5 6 18 19 25 46 78 102 114
0 1 2 3 4 5 6 7 8 9
Index
left right
Step 2:
middle index = (left + right) /2 = (2+3)/2 = 2
middle element value = a[2] = 6
Key=6 is equals to middle element = 6, so element found
-1 5 6 18 19 25 46 78 102 114
0 1 2 3 4 5 6 7 8 9
Index
Element Found
Step 3:
6
Binary Search - Algorithm
# Input: Sorted Array A, integer key
# Output: first index of key in A,
# or -1 if not found
Algorithm: Binary_Search (A, left, right)
left = 0, right = n-1
while left < right
middle = index halfway between left, right
if A[middle] matches key
return middle
else if key less than A[middle]
right = middle -1
else
left = middle + 1
return -1
Selection Sort
 Selection sort is a simple sorting algorithm.
 The list is divided into two parts,
 The sorted part at the left end and
 The unsorted part at the right end.
 Initially, the sorted part is empty and the unsorted part is the entire list.
 The smallest element is selected from the unsorted array and swapped with
the leftmost element, and that element becomes a part of the sorted array.
 This process continues moving unsorted array boundary by one element to the
right.
 This algorithm is not suitable for large data sets as its average and worst case
complexities are of Ο(n2
), where n is the number of items.
Selection Sort
5 1 12 -5 16 2 12 14
Unsorted Array
Step 1 :
5 1 12 -5 16 2 12 14
Unsorted Array
0 1 2 3 4 5 6 7
Step 2 :
Min index = 0, value = 5
5 1 12 -5 16 2 12 14
0 1 2 3 4 5 6 7
Find min value from
Unsorted array
Index = 3, value = -5
Unsorted Array (elements 0 to
7)
Swap
-5 5
Selection Sort
Step 3 :
-5 1 12 5 16 2 12 14
0 1 2 3 4 5 6 7
Unsorted Array (elements 1
to 7)
Min index = 1, value = 1
Find min value from
Unsorted array
Index = 1, value = 1
No Swapping as min value is already at right place
1
Step 4 :
-5 1 12 5 16 2 12 14
0 1 2 3 4 5 6 7
Unsorted Array
(elements 2 to 7)
Min index = 2, value = 12
Find min value from
Unsorted array
Index = 5, value = 2
Swap
2 12
Selection Sort
Step 5 :
-5 1 2 5 16 12 12 14
0 1 2 3 4 5 6 7
Min index = 3, value = 5
Find min value from
Unsorted array
Index = 3, value = 5
Step 6 :
-5 1 2 5 16 12 12 14
0 1 2 3 4 5 6 7
Min index = 4, value = 16
Find min value from
Unsorted array
Index = 5, value = 12
Swap
Unsorted Array
(elements 3 to 7)
No Swapping as min value is already at right place
5
Unsorted Array
(elements 5 to 7)
12 16
Selection Sort
Step 7 :
-5 1 2 5 12 16 12 14
0 1 2 3 4 5 6 7
Min index = 5, value = 16
Find min value from
Unsorted array
Index = 6, value = 12
Swap
12 16
Unsorted Array
(elements 5 to 7)
-5 1 2 5 12 12 16 14
0 1 2 3 4 5 6 7
Min index = 6, value = 16
Find min value from
Unsorted array
Index = 7, value = 14
Swap
14 16
Unsorted Array
(elements 6 to 7)
Step 8 :
SELECTION_SORT(K,N)
 Given a vector K of N elements
 This procedure rearrange the vector in ascending order using Selection Sort
 The variable PASS denotes the pass index and position of the first element in
the vector
 The variable MIN_INDEX denotes the position of the smallest element
encountered
 The variable I is used to index elements
SELECTION_SORT(K,N)
1. [Loop on the Pass index]
Repeat thru step 4 for PASS = 0,1,…….., N-2
2. [Initialize minimum index]
MIN_INDEX  PASS
3. [Make a pass and obtain element with smallest value]
Repeat for I = PASS + 1, PASS + 2, …………….., N-1
If K[I] < K[MIN_INDEX]
Then MIN_INDEX  I
4. [Exchange elements]
IF MIN_INDEX <> PASS
Then K[PASS]  K[MIN_INDEX]
5. [Finished]
Return
Bubble Sort
 Unlike selection sort, instead of finding the smallest record and performing
the interchange, two records are interchanged immediately upon discovering
that they are out of order
 During the first pass R1 and R2 are compared and interchanged in case of
our of order, this process is repeated for records R2 and R3, and so on.
 This method will cause records with small key to move “bubble up”,
 After the first pass, the record with largest key will be in the nth
position.
 On each successive pass, the records with the next largest key will be placed in
position n-1, n-2 ….., 2 respectively
 This approached required at most n–1 passes, The complexity of bubble sort is
O(n2
)
Bubble Sort
45 34 56 23 12
Unsorted Array
Pass 1 :
45
34
56
23
12
34
45
56
23
12
34
45
56
23
12
34
45
23
56
12
34
45
swap
swap
23
56
swap
12
56
Pass 2 :
34
45
23
12
56
34
45
23
12
56
34
23
45
12
56
34
23
12
45
56
swap
23
45
swap
12
45
Pass 3 :
23
34
12
45
56
23
12
34
45
56
swap
23
34
swap
12
34
Pass 4 :
swap
12
23
BUBBLE_SORT(K,N)
 Given a vector K of N elements
 This procedure rearrange the vector in ascending order using Bubble Sort
 The variable PASS & LAST denotes the pass index and position of the first
element in the vector
 The variable EXCHS is used to count number of exchanges made on any pass
 The variable I is used to index elements
Procedure: BUBBLE_SORT (K, N)
1. [Initialize]
LAST  N-1
2. [Loop on pass index]
Repeat thru step 5 for PASS = 0, 1, 2, …. , N-2
3. [Initialize exchange counter for this pass]
EXCHS  0
4. [Perform pairwise comparisons on unsorted elements]
Repeat for I = 0, 1, ……….., LAST – 1
IF K[I] > K [I+1]
Then K[I]  K[I+1]
EXCHS  EXCHS + 1
5. [Any exchange made in this pass?]
IF EXCHS = 0
Then Return (Vector is sorted, early return)
ELSE LAST  LAST - 1
6. [Finished]
Return
Quick Sort
 Quick sort is a highly efficient sorting algorithm and is based on partitioning
of array of data into smaller arrays.
 Quick Sort is divide and conquer algorithm.
 At each step of the method, the goal is to place a particular record in its final
position within the table,
 In doing so all the records which precedes this record will have smaller keys,
while all records that follows it have larger keys.
 This particular record is termed pivot element.
 The same process can then be applied to each of these sub-tables and
repeated until all records are placed in their positions
Quick Sort
 There are many different versions of Quick Sort that pick pivot in different
ways.
 Always pick first element as pivot. (in our case we have consider this version).
 Always pick last element as pivot
 Pick a random element as pivot.
 Pick median as pivot.
 Quick sort partitions an array and then calls itself recursively twice to sort the
two resulting sub arrays.
 This algorithm is quite efficient for large-sized data sets
 Its average and worst case complexity are of Ο(n2
), where n is the number of
items.
Quick Sort
42 23 74 11 65 58 94 36
0 1 2 3 4 5 6 7
99 87
8 9
LB UB
Pivot
Element
Sort Following Array using Quick Sort Algorithm
We are considering first element as pivot element, so Lower bound is First
Index and Upper bound is Last Index
We need to find our proper position of Pivot element in sorted array and
perform same operations recursively for two sub array
Quick Sort
42 23 74 11 65 58 94 36
0 1 2 3 4 5 6 7
99 87
8 9
FLAG  true
IF LB < UB
Then
I  LB
J  UB + 1
KEY  K[LB]
Repeat While FLAG = true
I  I+1
Repeat While K[I] < KEY
I  I + 1
J  J – 1
Repeat While K[J] > KEY
J  J – 1
IF I<J
Then K[I] --- K[J]
Else FLAG  FALSE
K[LB] --- K[J]
LB = 0, UB = 9
I= 0
J= 10
KEY = 42
I J
FLAG=
true
42 23 74 11 65 58 94 36 99 87
I J
36 74
Swap
42 23 36 11 65 58 94 74 99 87
I J
42
11
Swap
Quick Sort
FLAG  true
IF LB < UB
Then
I  LB
J  UB + 1
KEY  K[LB]
Repeat While FLAG = true
I  I+1
Repeat While K[I] < KEY
I  I + 1
J  J – 1
Repeat While K[J] > KEY
J  J – 1
IF I<J
Then K[I] --- K[J]
Else FLAG  FALSE
K[LB] --- K[J]
11 23 36 42 65 58 94 74
0 1 2 3 4 5 6 7
99 87
8 9
LB UB
11 23 36
I J
11
11 23 36 42 65 58 94 74 99 87
LB UB
23 36
I J
23
11 23 36 42 65 58 94 74 99 87
LB
UB
36
Quick Sort
FLAG  true
IF LB < UB
Then
I  LB
J  UB + 1
KEY  K[LB]
Repeat While FLAG = true
I  I+1
Repeat While K[I] < KEY
I  I + 1
J  J – 1
Repeat While K[J] > KEY
J  J – 1
IF I<J
Then K[I] --- K[J]
Else FLAG  FALSE
K[LB] --- K[J]
11 23 36 42 65 58 94 72 99 87
4 5 6 7 8 9
LB UB
65 58 94 72 99 87
I J
65 65
58
Swap
65 94 72 99 87
65
58 65
11 23 36 42 65 65 94 72 99 87
65
58
LB
UB
58
LB UB
Quick Sort
I
Swap
94 72 99 87
J
FLAG  true
IF LB < UB
Then
I  LB
J  UB + 1
KEY  K[LB]
Repeat While FLAG = true
I  I+1
Repeat While K[I] < KEY
I  I + 1
J  J – 1
Repeat While K[J] > KEY
J  J – 1
IF I<J
Then K[I] --- K[J]
Else FLAG  FALSE
K[LB] --- K[J]
UB
LB
94 87 99
94 72 87 99
94
I J
87 94
Swap
Swap
72
87
UB
LB
I J
87
72 87 99
94
72 87 99
94
LB
UB
LB
UB
72 99
11 23 36 42 65
58
Algorithm: QUICK_SORT(K,LB,UB)
1. [Initialize]
FLAG  true
2. [Perform Sort]
IF LB < UB
Then I  LB
J  UB + 1
KEY  K[LB]
Repeat While FLAG = true
I  I+1
Repeat While K[I] < KEY
I  I + 1
J  J – 1
Repeat While K[J] > KEY
J  J – 1
IF I<J
Then K[I] --- K[J]
Else FLAG  FALSE
K[LB] --- K[J]
CALL QUICK_SORT(K,LB, J-1)
CALL QUICK_SORT(K,J+1, UB)
CALL QUICK_SORT(K,LB, J-1)
3. [Finished]
Return
Merge Sort
 The operation of sorting is closely related to process of merging
 Merge Sort is a divide and conquer algorithm
 It is based on the idea of breaking down a list into several sub-lists until each
sub list consists of a single element
 Merging those sub lists in a manner that results into a sorted list
 Procedure
 Divide the unsorted list into N sub lists, each containing 1 element
 Take adjacent pairs of two singleton lists and merge them to form a list of 2
elements. N will now convert into N/2 lists of size 2
 Repeat the process till a single sorted list of obtained
 Time complexity is O(n log n)
Merge Sort
72
4
52
1
2 98 52
9
31 18
9
45
1
Unsorted Array
0 1 2 3 4 5 6 7
724 521 2 98 529 31 189 451
0 1 2 3 4 5 6 7
Step 1: Split the selected array (as evenly as
possible)
724 521 2 98
0 1 2 3
529 31 189 451
0 1 2 3
Merge Sort
Step: Select the left subarray, Split the selected array (as evenly as possible)
724 521 2 98
0 1 2 3
529 31 189 451
0 1 2 3
724 521
0 1
2 98
0 1
724
0
521
0
2
0
98
0
521 724 2 98
2 98 521 724
529 31
0 1
189 451
0 1
529
0
31
0
189
0
451
0
31 529 189 451
31 189 451 529
2 31 98 189 451 521 529 724
Merge Sort
 Merge Sort is a Divide and Conquer algorithm. It divides input array in two halves,
calls itself for the two halves and then merges the two sorted halves. The merge()
function is used for merging two halves. The merge(arr, l, m, r) is key process that
assumes that arr[l..m] and arr[m+1..r] are sorted and merges the two sorted sub-arrays
into one.
MergeSort(arr[ ], l, r)
If r > l
1. Find the middle point to divide the array into two halves:
middle m = (l+r)/2
2. Call mergeSort for first half:
Call mergeSort(arr, l, m)
3. Call mergeSort for second half:
Call mergeSort(arr, m+1, r)
4. Merge the two halves sorted in step 2 and 3:
Thank
You

More Related Content

Similar to Searching and Sorting algorithms and working (20)

PPTX
UNIT V Searching Sorting Hashing Techniques [Autosaved].pptx
kncetaruna
 
PPTX
UNIT V Searching Sorting Hashing Techniques [Autosaved].pptx
VISWANATHAN R V
 
PPTX
2.Problem Solving Techniques and Data Structures.pptx
Ganesh Bhosale
 
PPTX
Different Searching and Sorting Methods.pptx
Minakshee Patil
 
PDF
Sorting
Zaid Shabbir
 
PDF
Sorting
Zaid Shabbir
 
PPTX
Sorting Algorithms to arrange data in particular format
itsusamazahid
 
PPT
search_sort Search sortSearch sortSearch sortSearch sort
Shanmuganathan C
 
PPTX
searching in data structure.pptx
chouguleamruta24
 
PPT
search_sort search_sortsearch_sort search_sortsearch_sortsearch_sortsearch_sort
Kanupriya731200
 
PPT
search_sort.ppt
SwatiHans10
 
PDF
Chapter 14 Searching and Sorting
MuhammadBakri13
 
PPTX
Chapter 2. data structure and algorithm
SolomonEndalu
 
PDF
Sorting algorithms bubble sort to merge sort.pdf
AyeshaMazhar21
 
PPTX
Unit 5 dsuc
Sweta Singh
 
PPTX
Algorithm & data structures lec4&5
Abdul Khan
 
PPTX
Chapter 3 - Data Structure and Algorithms.pptx
tarrebulehora
 
PPTX
DIVIDE AND CONQUERMETHOD IN DATASTRUCTURE.pptx
LakshmiSamivel
 
PPTX
Lecture3a sorting
mbadhi barnabas
 
PDF
Bs,qs,divide and conquer 1
subhashchandra197
 
UNIT V Searching Sorting Hashing Techniques [Autosaved].pptx
kncetaruna
 
UNIT V Searching Sorting Hashing Techniques [Autosaved].pptx
VISWANATHAN R V
 
2.Problem Solving Techniques and Data Structures.pptx
Ganesh Bhosale
 
Different Searching and Sorting Methods.pptx
Minakshee Patil
 
Sorting
Zaid Shabbir
 
Sorting
Zaid Shabbir
 
Sorting Algorithms to arrange data in particular format
itsusamazahid
 
search_sort Search sortSearch sortSearch sortSearch sort
Shanmuganathan C
 
searching in data structure.pptx
chouguleamruta24
 
search_sort search_sortsearch_sort search_sortsearch_sortsearch_sortsearch_sort
Kanupriya731200
 
search_sort.ppt
SwatiHans10
 
Chapter 14 Searching and Sorting
MuhammadBakri13
 
Chapter 2. data structure and algorithm
SolomonEndalu
 
Sorting algorithms bubble sort to merge sort.pdf
AyeshaMazhar21
 
Unit 5 dsuc
Sweta Singh
 
Algorithm & data structures lec4&5
Abdul Khan
 
Chapter 3 - Data Structure and Algorithms.pptx
tarrebulehora
 
DIVIDE AND CONQUERMETHOD IN DATASTRUCTURE.pptx
LakshmiSamivel
 
Lecture3a sorting
mbadhi barnabas
 
Bs,qs,divide and conquer 1
subhashchandra197
 

Recently uploaded (20)

PPTX
Kel.3_A_Review_on_Internet_of_Things_for_Defense_v3.pptx
Endang Saefullah
 
PPTX
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
PPTX
Functions in Python Programming Language
BeulahS2
 
PDF
Plant Control_EST_85520-01_en_AllChanges_20220127.pdf
DarshanaChathuranga4
 
PDF
William Stallings - Foundations of Modern Networking_ SDN, NFV, QoE, IoT, and...
lavanya896395
 
PPTX
Computer network Computer network Computer network Computer network
Shrikant317689
 
PDF
輪読会資料_Miipher and Miipher2 .
NABLAS株式会社
 
PDF
MODULE-5 notes [BCG402-CG&V] PART-B.pdf
Alvas Institute of Engineering and technology, Moodabidri
 
PDF
Module - 5 Machine Learning-22ISE62.pdf
Dr. Shivashankar
 
PPT
FINAL plumbing code for board exam passer
MattKristopherDiaz
 
PDF
13th International Conference of Security, Privacy and Trust Management (SPTM...
ijcisjournal
 
PPTX
Unit_I Functional Units, Instruction Sets.pptx
logaprakash9
 
PDF
A Brief Introduction About Robert Paul Hardee
Robert Paul Hardee
 
PPTX
Engineering Quiz ShowEngineering Quiz Show
CalvinLabial
 
PPTX
Diabetes diabetes diabetes diabetes jsnsmxndm
130SaniyaAbduNasir
 
PPTX
Precooling and Refrigerated storage.pptx
ThongamSunita
 
PDF
Designing for Tomorrow – Architecture’s Role in the Sustainability Movement
BIM Services
 
DOCX
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
PDF
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
PDF
Clustering Algorithms - Kmeans,Min ALgorithm
Sharmila Chidaravalli
 
Kel.3_A_Review_on_Internet_of_Things_for_Defense_v3.pptx
Endang Saefullah
 
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
Functions in Python Programming Language
BeulahS2
 
Plant Control_EST_85520-01_en_AllChanges_20220127.pdf
DarshanaChathuranga4
 
William Stallings - Foundations of Modern Networking_ SDN, NFV, QoE, IoT, and...
lavanya896395
 
Computer network Computer network Computer network Computer network
Shrikant317689
 
輪読会資料_Miipher and Miipher2 .
NABLAS株式会社
 
MODULE-5 notes [BCG402-CG&V] PART-B.pdf
Alvas Institute of Engineering and technology, Moodabidri
 
Module - 5 Machine Learning-22ISE62.pdf
Dr. Shivashankar
 
FINAL plumbing code for board exam passer
MattKristopherDiaz
 
13th International Conference of Security, Privacy and Trust Management (SPTM...
ijcisjournal
 
Unit_I Functional Units, Instruction Sets.pptx
logaprakash9
 
A Brief Introduction About Robert Paul Hardee
Robert Paul Hardee
 
Engineering Quiz ShowEngineering Quiz Show
CalvinLabial
 
Diabetes diabetes diabetes diabetes jsnsmxndm
130SaniyaAbduNasir
 
Precooling and Refrigerated storage.pptx
ThongamSunita
 
Designing for Tomorrow – Architecture’s Role in the Sustainability Movement
BIM Services
 
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
Clustering Algorithms - Kmeans,Min ALgorithm
Sharmila Chidaravalli
 
Ad

Searching and Sorting algorithms and working

  • 2. Sorting & Searching  Searching  Linear/Sequential Search  Binary Search  Sorting  Sélection Sort  Bubble sort  Quick Sort  Merge Sort
  • 3. Linear/Sequential Search  In computer science, linear search or sequential search is a method for finding a particular value in a list that consists of checking every one of its elements, one at a time and in sequence, until the desired one is found.  Linear search is the simplest search algorithm.  It is a special case of brute-force search.  Its worst case cost is proportional to the number of elements in the list.
  • 4. Sequential Search – Algorithm & Example # Input: Array A, integer key # Output: first index of key in A # or -1 if not found Algorithm: Linear_Search for i = 0 to last index of A: if A[i] equals key: return i return -1 Search for 1 in given array 2 9 3 1 8 Comparing value of ith index with element to be search one by one until we get searched element or end of the array Step 1: i=0 2 9 3 1 8 i Step 1: i=1 2 9 3 1 8 i Step 1: i=2 2 9 3 1 8 i Step 1: i=3 2 9 3 1 8 i 1 Element found at ith index, i=3
  • 5. Binary Search  If we have an array that is sorted, we can use a much more efficient algorithm called a Binary Search.  In binary search each time we divide array into two equal half and compare middle element with search element.  Searching Logic  If middle element is equal to search element then we got that element and return that index  if middle element is less than search element we look right part of array  if middle element is greater than search element we look left part of array.
  • 6. Binary Search - Algorithm Search for 6 in given array -1 5 6 18 19 25 46 78 102 114 Key=6, No of Elements = 10, so left = 0, right=9 0 1 2 3 4 5 6 7 8 9 Index middle index = (left + right) /2 = (0+9)/2 = 4 middle element value = a[4] = 19 Key=6 is less than middle element = 19, so right = middle – 1 = 4 – 1 = 3, left = 0 -1 5 6 18 19 25 46 78 102 114 0 1 2 3 4 5 6 7 8 9 Index left right left right Step 1:
  • 7. Binary Search - Algorithm middle index = (left + right) /2 = (0+3)/2 = 1 middle element value = a[1] = 5 Key=6 is greater than middle element = 5, so left = middle + 1 =1 + 1 = 2, right = 3 -1 5 6 18 19 25 46 78 102 114 0 1 2 3 4 5 6 7 8 9 Index left right Step 2: middle index = (left + right) /2 = (2+3)/2 = 2 middle element value = a[2] = 6 Key=6 is equals to middle element = 6, so element found -1 5 6 18 19 25 46 78 102 114 0 1 2 3 4 5 6 7 8 9 Index Element Found Step 3: 6
  • 8. Binary Search - Algorithm # Input: Sorted Array A, integer key # Output: first index of key in A, # or -1 if not found Algorithm: Binary_Search (A, left, right) left = 0, right = n-1 while left < right middle = index halfway between left, right if A[middle] matches key return middle else if key less than A[middle] right = middle -1 else left = middle + 1 return -1
  • 9. Selection Sort  Selection sort is a simple sorting algorithm.  The list is divided into two parts,  The sorted part at the left end and  The unsorted part at the right end.  Initially, the sorted part is empty and the unsorted part is the entire list.  The smallest element is selected from the unsorted array and swapped with the leftmost element, and that element becomes a part of the sorted array.  This process continues moving unsorted array boundary by one element to the right.  This algorithm is not suitable for large data sets as its average and worst case complexities are of Ο(n2 ), where n is the number of items.
  • 10. Selection Sort 5 1 12 -5 16 2 12 14 Unsorted Array Step 1 : 5 1 12 -5 16 2 12 14 Unsorted Array 0 1 2 3 4 5 6 7 Step 2 : Min index = 0, value = 5 5 1 12 -5 16 2 12 14 0 1 2 3 4 5 6 7 Find min value from Unsorted array Index = 3, value = -5 Unsorted Array (elements 0 to 7) Swap -5 5
  • 11. Selection Sort Step 3 : -5 1 12 5 16 2 12 14 0 1 2 3 4 5 6 7 Unsorted Array (elements 1 to 7) Min index = 1, value = 1 Find min value from Unsorted array Index = 1, value = 1 No Swapping as min value is already at right place 1 Step 4 : -5 1 12 5 16 2 12 14 0 1 2 3 4 5 6 7 Unsorted Array (elements 2 to 7) Min index = 2, value = 12 Find min value from Unsorted array Index = 5, value = 2 Swap 2 12
  • 12. Selection Sort Step 5 : -5 1 2 5 16 12 12 14 0 1 2 3 4 5 6 7 Min index = 3, value = 5 Find min value from Unsorted array Index = 3, value = 5 Step 6 : -5 1 2 5 16 12 12 14 0 1 2 3 4 5 6 7 Min index = 4, value = 16 Find min value from Unsorted array Index = 5, value = 12 Swap Unsorted Array (elements 3 to 7) No Swapping as min value is already at right place 5 Unsorted Array (elements 5 to 7) 12 16
  • 13. Selection Sort Step 7 : -5 1 2 5 12 16 12 14 0 1 2 3 4 5 6 7 Min index = 5, value = 16 Find min value from Unsorted array Index = 6, value = 12 Swap 12 16 Unsorted Array (elements 5 to 7) -5 1 2 5 12 12 16 14 0 1 2 3 4 5 6 7 Min index = 6, value = 16 Find min value from Unsorted array Index = 7, value = 14 Swap 14 16 Unsorted Array (elements 6 to 7) Step 8 :
  • 14. SELECTION_SORT(K,N)  Given a vector K of N elements  This procedure rearrange the vector in ascending order using Selection Sort  The variable PASS denotes the pass index and position of the first element in the vector  The variable MIN_INDEX denotes the position of the smallest element encountered  The variable I is used to index elements
  • 15. SELECTION_SORT(K,N) 1. [Loop on the Pass index] Repeat thru step 4 for PASS = 0,1,…….., N-2 2. [Initialize minimum index] MIN_INDEX  PASS 3. [Make a pass and obtain element with smallest value] Repeat for I = PASS + 1, PASS + 2, …………….., N-1 If K[I] < K[MIN_INDEX] Then MIN_INDEX  I 4. [Exchange elements] IF MIN_INDEX <> PASS Then K[PASS]  K[MIN_INDEX] 5. [Finished] Return
  • 16. Bubble Sort  Unlike selection sort, instead of finding the smallest record and performing the interchange, two records are interchanged immediately upon discovering that they are out of order  During the first pass R1 and R2 are compared and interchanged in case of our of order, this process is repeated for records R2 and R3, and so on.  This method will cause records with small key to move “bubble up”,  After the first pass, the record with largest key will be in the nth position.  On each successive pass, the records with the next largest key will be placed in position n-1, n-2 ….., 2 respectively  This approached required at most n–1 passes, The complexity of bubble sort is O(n2 )
  • 17. Bubble Sort 45 34 56 23 12 Unsorted Array Pass 1 : 45 34 56 23 12 34 45 56 23 12 34 45 56 23 12 34 45 23 56 12 34 45 swap swap 23 56 swap 12 56 Pass 2 : 34 45 23 12 56 34 45 23 12 56 34 23 45 12 56 34 23 12 45 56 swap 23 45 swap 12 45 Pass 3 : 23 34 12 45 56 23 12 34 45 56 swap 23 34 swap 12 34 Pass 4 : swap 12 23
  • 18. BUBBLE_SORT(K,N)  Given a vector K of N elements  This procedure rearrange the vector in ascending order using Bubble Sort  The variable PASS & LAST denotes the pass index and position of the first element in the vector  The variable EXCHS is used to count number of exchanges made on any pass  The variable I is used to index elements
  • 19. Procedure: BUBBLE_SORT (K, N) 1. [Initialize] LAST  N-1 2. [Loop on pass index] Repeat thru step 5 for PASS = 0, 1, 2, …. , N-2 3. [Initialize exchange counter for this pass] EXCHS  0 4. [Perform pairwise comparisons on unsorted elements] Repeat for I = 0, 1, ……….., LAST – 1 IF K[I] > K [I+1] Then K[I]  K[I+1] EXCHS  EXCHS + 1 5. [Any exchange made in this pass?] IF EXCHS = 0 Then Return (Vector is sorted, early return) ELSE LAST  LAST - 1 6. [Finished] Return
  • 20. Quick Sort  Quick sort is a highly efficient sorting algorithm and is based on partitioning of array of data into smaller arrays.  Quick Sort is divide and conquer algorithm.  At each step of the method, the goal is to place a particular record in its final position within the table,  In doing so all the records which precedes this record will have smaller keys, while all records that follows it have larger keys.  This particular record is termed pivot element.  The same process can then be applied to each of these sub-tables and repeated until all records are placed in their positions
  • 21. Quick Sort  There are many different versions of Quick Sort that pick pivot in different ways.  Always pick first element as pivot. (in our case we have consider this version).  Always pick last element as pivot  Pick a random element as pivot.  Pick median as pivot.  Quick sort partitions an array and then calls itself recursively twice to sort the two resulting sub arrays.  This algorithm is quite efficient for large-sized data sets  Its average and worst case complexity are of Ο(n2 ), where n is the number of items.
  • 22. Quick Sort 42 23 74 11 65 58 94 36 0 1 2 3 4 5 6 7 99 87 8 9 LB UB Pivot Element Sort Following Array using Quick Sort Algorithm We are considering first element as pivot element, so Lower bound is First Index and Upper bound is Last Index We need to find our proper position of Pivot element in sorted array and perform same operations recursively for two sub array
  • 23. Quick Sort 42 23 74 11 65 58 94 36 0 1 2 3 4 5 6 7 99 87 8 9 FLAG  true IF LB < UB Then I  LB J  UB + 1 KEY  K[LB] Repeat While FLAG = true I  I+1 Repeat While K[I] < KEY I  I + 1 J  J – 1 Repeat While K[J] > KEY J  J – 1 IF I<J Then K[I] --- K[J] Else FLAG  FALSE K[LB] --- K[J] LB = 0, UB = 9 I= 0 J= 10 KEY = 42 I J FLAG= true 42 23 74 11 65 58 94 36 99 87 I J 36 74 Swap 42 23 36 11 65 58 94 74 99 87 I J 42 11 Swap
  • 24. Quick Sort FLAG  true IF LB < UB Then I  LB J  UB + 1 KEY  K[LB] Repeat While FLAG = true I  I+1 Repeat While K[I] < KEY I  I + 1 J  J – 1 Repeat While K[J] > KEY J  J – 1 IF I<J Then K[I] --- K[J] Else FLAG  FALSE K[LB] --- K[J] 11 23 36 42 65 58 94 74 0 1 2 3 4 5 6 7 99 87 8 9 LB UB 11 23 36 I J 11 11 23 36 42 65 58 94 74 99 87 LB UB 23 36 I J 23 11 23 36 42 65 58 94 74 99 87 LB UB 36
  • 25. Quick Sort FLAG  true IF LB < UB Then I  LB J  UB + 1 KEY  K[LB] Repeat While FLAG = true I  I+1 Repeat While K[I] < KEY I  I + 1 J  J – 1 Repeat While K[J] > KEY J  J – 1 IF I<J Then K[I] --- K[J] Else FLAG  FALSE K[LB] --- K[J] 11 23 36 42 65 58 94 72 99 87 4 5 6 7 8 9 LB UB 65 58 94 72 99 87 I J 65 65 58 Swap 65 94 72 99 87 65 58 65 11 23 36 42 65 65 94 72 99 87 65 58 LB UB 58 LB UB
  • 26. Quick Sort I Swap 94 72 99 87 J FLAG  true IF LB < UB Then I  LB J  UB + 1 KEY  K[LB] Repeat While FLAG = true I  I+1 Repeat While K[I] < KEY I  I + 1 J  J – 1 Repeat While K[J] > KEY J  J – 1 IF I<J Then K[I] --- K[J] Else FLAG  FALSE K[LB] --- K[J] UB LB 94 87 99 94 72 87 99 94 I J 87 94 Swap Swap 72 87 UB LB I J 87 72 87 99 94 72 87 99 94 LB UB LB UB 72 99 11 23 36 42 65 58
  • 27. Algorithm: QUICK_SORT(K,LB,UB) 1. [Initialize] FLAG  true 2. [Perform Sort] IF LB < UB Then I  LB J  UB + 1 KEY  K[LB] Repeat While FLAG = true I  I+1 Repeat While K[I] < KEY I  I + 1 J  J – 1 Repeat While K[J] > KEY J  J – 1 IF I<J Then K[I] --- K[J] Else FLAG  FALSE K[LB] --- K[J] CALL QUICK_SORT(K,LB, J-1) CALL QUICK_SORT(K,J+1, UB) CALL QUICK_SORT(K,LB, J-1) 3. [Finished] Return
  • 28. Merge Sort  The operation of sorting is closely related to process of merging  Merge Sort is a divide and conquer algorithm  It is based on the idea of breaking down a list into several sub-lists until each sub list consists of a single element  Merging those sub lists in a manner that results into a sorted list  Procedure  Divide the unsorted list into N sub lists, each containing 1 element  Take adjacent pairs of two singleton lists and merge them to form a list of 2 elements. N will now convert into N/2 lists of size 2  Repeat the process till a single sorted list of obtained  Time complexity is O(n log n)
  • 29. Merge Sort 72 4 52 1 2 98 52 9 31 18 9 45 1 Unsorted Array 0 1 2 3 4 5 6 7 724 521 2 98 529 31 189 451 0 1 2 3 4 5 6 7 Step 1: Split the selected array (as evenly as possible) 724 521 2 98 0 1 2 3 529 31 189 451 0 1 2 3
  • 30. Merge Sort Step: Select the left subarray, Split the selected array (as evenly as possible) 724 521 2 98 0 1 2 3 529 31 189 451 0 1 2 3 724 521 0 1 2 98 0 1 724 0 521 0 2 0 98 0 521 724 2 98 2 98 521 724 529 31 0 1 189 451 0 1 529 0 31 0 189 0 451 0 31 529 189 451 31 189 451 529 2 31 98 189 451 521 529 724
  • 31. Merge Sort  Merge Sort is a Divide and Conquer algorithm. It divides input array in two halves, calls itself for the two halves and then merges the two sorted halves. The merge() function is used for merging two halves. The merge(arr, l, m, r) is key process that assumes that arr[l..m] and arr[m+1..r] are sorted and merges the two sorted sub-arrays into one. MergeSort(arr[ ], l, r) If r > l 1. Find the middle point to divide the array into two halves: middle m = (l+r)/2 2. Call mergeSort for first half: Call mergeSort(arr, l, m) 3. Call mergeSort for second half: Call mergeSort(arr, m+1, r) 4. Merge the two halves sorted in step 2 and 3: