BUBBLE SORT :
Bubble
sort is a simple sorting algorithm also
called Sinking sort
which just goes through a set of data ( list
of numbers
or characters)
and compares each member with its right neighbour . The
pass through the list is repeated until no more swaps are needed ,
which indicates that the list is sorted . Although
the algorithm is simple , It is too slow and impractical for a large
set of data.
PSEUDOCODE
:
WORKING
:
The
bubble sort working with an example :
A[]
= {9,3,6,1,8,4,2}
The
length of the array is 7 i.e. let n=7.
For
1st
iteration :
After
1st
iteration we will get a largest element (9)
at the last index of the array . So
for the 2nd
iteration we need not to include it , because as in the sorted list ,
the last element will be the largest one.
For
2nd iteration :
Here u can observe the second largest element (8) in the array is in it's place (at n-2 index).
For
3rd iteration :
For 4th iteration:
For 6th iteration :
As here , there is no swaps , IF condition won't execute . So n=k i.e.(n=1) and the program will stop. Finally the sorted array is
PERFORMANCE
:
Bubble
sort has worst-case and average complexity both О(n2),
where n is the number of items being sorted. There exist many sorting
algorithms with substantially better worst-case
or average
complexity
of O(nlogn)
. Therefore, bubble sort is not a practical sorting algorithm when n
is large.
The
positions of the elements in bubble sort will play a large part in
determining its performance . Large elements at the beginning of the
list do not pose a problem , as they are quickly swapped . Small
elements towards the end however , move to the beginning extremely
slowly . This has led to these types of elements being named rabbits
and turtles
respectively .
It
has a special feature , that the
largest element(
at last index )
gets sorted first , with smaller elements taking longer to move to
their correct positions.
The
only significant advantage that bubble sort has over most other
implementations, even quicksort, but not insertion sort, is that the
ability to detect that the list is sorted in
efficient way
.When
the list is already sorted (best-case), the complexity of bubble sort
is only O(n). By contrast, most other algorithms, even those with
better average-case complexity, perform their entire sorting process
on the set and thus are more complex.
ANALYSIS
:
U
will be knowing that we do sort for a set of numbers. Suppose
if u have given array of elements which is already sorted and one
element is added to this..U will be having doubt where we have to add
this element(at the begining or ending of array)..What
is that complexity for
this
sorting, if we add new element at the last..?
Take
a look with an example :
For
1st iteration :
FOR
2ND ITERATION :
As
for 2nd
iteration , no swaping occurs i.e. k=n=1. So there is no chance of
3rd
iteration and the program exits.
Now
consider
the case of adding the new number (assume 5 ) at the ending of the array .
For
1st iteration :
For
2nd iteration :
For
3rd iteration :
For
4th iteration :
As
for
4th
iteration , no swaping
occurs i.e. k=n=1.
So there no chance of 5th
iteration and the program exits.
From
the analysis , we observe that by adding an element at the front of
index , the cost of running time is less as compared to the cost of
running time for the case of adding element at the last.
IN
PRACTICE :
Bubble
sort
is one of the simplest sorting algorithm to implement and easy to
understand . Due
to its simplicity, bubble sort is often used to introduce the concept
of an algorithm, or a sorting algorithm, to introductory students.
But
due its O(n2)
complexity ,
It will not be
efficient for
the case of large
lists .Its
O(n2)
complexity means that its efficiency decreases dramatically on lists
of large number of
elements . Even
among simple O(n2)
sorting algorithms like insertion sort are usually considerably more
efficient.
Code :