You are on page 1of 29

Sorting Techniques

Tazeen Muzammil
MSSE
Sorting

• Refers to the operation of arranging the data


in some given order, such as increasing or
decreasing.
• For Example let A be a list of n numbers then:
A[1]<A[2]<A[3]<…………..A[n]
• fhgfgh
Sorting Techniques
Some of the sorting techniques used to
arrange data are as follows :
• Bubble sort
• Selection sort
• Insertion sort
• Merge sort
• Quick sort
Bubble Sort

• The general idea of the bubble sort is that each element is


compared to all the elements in the data.
• The bubble sort algorithm requires N-1 passes to sort N items
of data.
• The bubble sort is notoriously slow, but it is conceptually the
simplest of the sorting algorithms.
1. The result of the first pass is that the largest item is in the last
location of the array.
2. The result of the second pass is that the second largest item is in the
second last location of the array.
3. etc.
4. After N passes, the entire array is sorted.
Bubble Sort

The operation in each pass is as follows:


1. First, the values in the first two locations are compared. If
necessary the values are exchanged, so that the largest one is
last.
2. Then, the values in the second and third locations are compared.
If necessary the values are exchanged, so that again the largest
one is last.
3. This process repeats to the end of the array.
4. In effect, the largest item bubbles its way towards the top. It
keeps on going until either it reaches the top and the pass ends.
• If a complete pass is made without any exchanges being
made, the data must already be sorted.
Example

• Suppose the following numbers are stored in an array A:


32,51,27,85,66,23,13,57
Pass 1:
a) Compare A[1] and A[2]:Since 32<51 the list is not altered.
b) Compare A[2] and A[3]: Since 51>27 interchange 51 and 27.
32,27,51,85,66,23,13,57
c) Compare A[3] and A[4]:Since 51<85 the list is not altered.
d) Compare A[4] and A[5]: Since 85>66 interchange 85 and 66.
32,27,51,66,85,23,13,57
e) Compare A[5] and A[6]: Since 85>23 interchange 85 and 23.
32,27,51,66,23,85,13,57
f) Compare A[6] and A[7]: Since 85>13 interchange 85 and 13.
g) 32,27,51,66,23,13,85,57
h) Compare A[7] and A[8]: Since 85>57 interchange 85 and 57.
i) 32,27,51,66,23,13,57,85
Bubble Sort Algorithm

• DATA is an array with N elements. This algorithm sorts the


elements in DATA.
BUBBLE(DATA,N)
1. Repeat Step 2 and 3 for K=1 to N-1
2. Set PTR=1[Initialize pass pointer]
3. Repeat while PTR< N-K[Executes pass]
a) If DATA[PTR] > DATA[PTR+1] then
Interchange DATA[PTR] and DATA[PTR+1]
[End of If structure]
b) Set PTR = PTR +1
[End of inner loop]
[End of Setp 1 outer loop]
4. Exit
Complexity Bubble Sort

• Worst Case:
The worst case occurs when we have to search
through the entire array of data and the item does
not appear in data. In this case the algorithm requires
f(n) = n+1 comparisons.
• Average Case:
The average number of comparisons required to find
the location item is approximately equal to half
number of elements in the array that is :
f(n) = n+1/2 comparisons.
Selection Sort
• The general idea of the selection sort is that
for each slot, find the element that belongs
there.
• The selection sort improves on the bubble sort
by reducing the number of swaps.
• The number of comparisons remains the same
that is to sort N items you make N-1 passes
through them.
Selection Sort
• The operation in each pass is as follows:
1. First find the smallest element in the list and put it
in the first position.
2. On the second pass you scan through just the first
N-1 entries. Then find the second smallest element
in the list and put it in the second position.
3. This process is repeated, with one item being
placed in its correct location each time.
4. After N-1 passes, the entire collection of data is
sorted.
Example

• Suppose the following numbers are stored in an array A:


77,33,44,11,88,22,66,55

Pass 1: 77,33,44,11,88,22,66,55
Pass 2: 11,33,44,77,88,22,66,55
Pass 3: 11,22,44,77,88,33,66,55
Pass 4: 11,22,33,77,88,44,66,55
Pass 5: 11,22,33,44,88,77,66,55
Pass 6: 11,22,33,44,55,77,66,88
Pass 7: 11,22,33,44,55,66,77,88
Selection Sort Algorithm
• This procedure finds the location LOC of the
smallest element.
MIN (A,K, N,LOC)
1. [Initialize pointer]Set MIN=A[K] and LOC=K
2. Repeat for J=K+1 …..N
If MIN>A[J] then
Set MIN= A[J] LOC= A[J] and LOC=J
End of loop
3. Return
Selection Sort Algorithm
• This algorithm sorts the array A with N elements.
SELECTION (A,N)
1. Repeat Step 2and 3 for K=1 …..N-1
2. Call MIN(A,K,N,LOC)
3. [Interchange A[K] and A[LOC]
Set TEMP=A[K] , A[K]= A[LOC] and A[LOC] =TEMP
4. [End of Step 1 loop]
5. Exit
Insertion Sort
• The general idea of the insertion sort method is
that for each element, find the slot where it
belongs.
• This sorting algorithm is frequently used when N
is small.
• Suppose A is an array with N elements.
• The insertion sort scans A from A[1] to A[N]
inserting each element A[k] into its proper
position
Insertion Sort
• The operation in each pass is as follows:
1. A[1 ] by itself is sorted.
2. A[2] is inserted either before A[1] or after A[1] so
that A[1] and A[2] are sorted.
3. A[N] is inserted into its proper place in A[1],A[2]
…A[N-1] so that A[1],A[2]…A[N] is sorted.
Example
• Suppose the following numbers are stored in an array A:
77,33,44,11,88,22,66,55
Pass 1:77,33,44,11,88,22,66,55
Pass 2:77,33,44,11,88,22,66,55
Pass 3:33,77,44,11,88,22,66,55
Pass 4:33,44,77,11,88,22,66,55
Pass 5:11,33,44,77,88,22,66,55
Pass 6:11,22,33,44,77,88,66,55
Pass 7:11,22,33,44,66,77,88,55
Pass 8:11,22,33,44,55,66,77,88
Insertion Sort Algorithm
This algorithm sorts the array A with N elements.
(Insertion Sort) INSERTION(A,N)
1. Set A[0]:=0.
2. Repeat Steps 3 to 5 for K = 2, 3,……,N:
3. Set TEMP := A[K] and PTR:= K – 1
4. Repeat while TEMP <A[PTR]:
(a) Set A[PTR + 1] :=A[PTR].[moves elements forward.]
(b) Set PTR := PTR – 1
[End of loop.
5. Set A[PTR + 1]:=TEMP.{Inserts element in proper place.]
[End of Step 2 loop.]
6. Return.
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A G auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A G H auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A G H I auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A G H I L auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A G H I L M auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A G H I L M O auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
– Repeat until done.
smallest smallest

A G L O R H I M S T

A G H I L M O R auxiliary array
Merging
•Merge.
– Keep track of smallest element in each sorted half.
– Insert smallest of two elements into auxiliary array.
first half
– Repeat until done.exhausted smallest

A G L O R H I M S T

A G H I L M O R S auxiliary array
Mergesort
•Mergesort (divide-and-conquer)
– Divide array into two halves.

A L G O R I T H M S

A L G O R I T H M S divide
Mergesort
•Mergesort (divide-and-conquer)
– Divide array into two halves.
– Recursively sort each half.

A L G O R I T H M S

A L G O R I T H M S divide

A G L O R H I M S T sort
•Mergesort (divide-and-conquer)
Mergesort
– Divide array into two halves.
– Recursively sort each half.
– Merge two halves to make sorted whole.

A L G O R I T H M S

A L G O R I T H M S divide

A G L O R H I M S T sort

A G H I L M O R S T merge

You might also like