Data Structure - Sorting
Techniques
Leaning Objectives
 Describe sorting
 Discuss the type of sort
 Applications of sorting
 Apply the bubble sort algorithm in determine the
output

Sorting
 refers to arranging data in a particular format.
 Sorting algorithm specifies the way to arrange data in a particular
order.
 Most common orders are in numerical or lexicographical order.
 The importance of sorting lies in the fact that data searching can be optimized
to a very high level, if data is stored in a sorted manner.
 is also used to represent data in more readable formats. Following
are some of the examples of sorting in real-life scenarios −
 Telephone Directory − The telephone directory stores the telephone
numbers of people sorted by their names, so that the names can be searched
easily.
 Dictionary − The dictionary stores words in an alphabetical order so that
searching of any word becomes easy.
In-place Sorting and Not-in-
place Sorting
Sorting algorithms
 may require some extra space for comparison and
temporary storage of few data elements.
 in-place sorting
 do not require any extra space and sorting is said to happen in-
place, or for example, within the array itself.
 Example - Bubble sort
 not-in-place sorting
 the program requires space which is more than or equal to the
elements being sorted.
 Sorting which uses equal or more space is called .
 Example - Merge-sort
Stable and Not Stable Sorting
 Stable sorting
 does not change the sequence of similar content in which they
appear after sorting the contents .
 unstable sorting
 changes the sequence of similar content in which they appear
after sorting the contents.
 Stability of an algorithm matters when we wish to
maintain the sequence of original elements, like in a
tuple for example.
Adaptive and Non-Adaptive Sorting Algorithm
 Adaptive
 if it takes advantage of already 'sorted' elements in the list that
is to be sorted.
 while sorting if the source list has some element already sorted,
adaptive algorithms will take this into account and will try not
to re-order them.
 non-adaptive algorithm
 is one which does not take into account the elements which are
already sorted.
 They try to force every single element to be re-ordered to
confirm their sortedness.
Important Terms
 Increasing Order
 A sequence of values is said to be in increasing order, if the
successive element is greater than the previous one.
 For example, 1, 3, 4, 6, 8, 9 are in increasing order, as every
next element is greater than the previous element.
 Decreasing Order
 A sequence of values is said to be in decreasing order, if the
successive element is less than the current one.
 For example, 9, 8, 6, 4, 3, 1 are in decreasing order, as every
next element is less than the previous element.
 Non-Increasing Order
 A sequence of values is said to be in non-increasing order, if the successive
element is less than or equal to its previous element in the sequence.
 This order occurs when the sequence contains duplicate values.
 For example, 9, 8, 6, 3, 3, 1 are in non-increasing order, as every next element
is less than or equal to (in case of 3) but not greater than any previous
element.
 Non-Decreasing Order
 A sequence of values is said to be in non-decreasing order, if the successive
element is greater than or equal to its previous element in the sequence.
 This order occurs when the sequence contains duplicate values.
 For example, 1, 3, 3, 6, 8, 9 are in non-decreasing order, as every next element
is greater than or equal to (in case of 3) but not less than the previous one.
Bubble Sort Algorithm
Bubble sort
 is a simple sorting algorithm.
 is comparison-based algorithm in which each pair of
adjacent elements is compared and the elements are
swapped if they are not in order.
 is not suitable for large data sets as its average and
worst case complexity are of Ο(n2
) where n is the
number of items.
 This is the most simplest algorithm and inefficient
Application of Bubble Sort
 used in educational purposes for helping students
understand the foundations of sorting.
 used to identify whether the list is already sorted.
When the list is already sorted (which is the best-case
scenario), the complexity of bubble sort is only O(n).
 In real life, bubble sort can be visualised when people
in a queue wanting to be standing in a height wise
sorted manner swap their positions among themselves
until everyone is standing based on increasing order
of heights.
Bubble Sort Algorithm
 compare adjacent elements and see if their order is
wrong (i.e a[i] > a[j] for 1 <= i < j <= size of array; if
array is to be in ascending order, and vice-versa).
 If yes, then swap them.
Bubble Sort Algorithm
1. Let us say, we have an array of length n. To sort this array we do
the above step (swapping) for n - 1 passes.
2. In simple terms, first, the largest element goes at its extreme
right place then, second largest to the last by one place, and so
on. In the ith pass, the ith largest element goes at its right place
in the array by swappings.
3. In mathematical terms, in ith pass, at least one element from (n
- i + 1) elements from start will go at its right place.
 That element will be the ith (for 1 <= i <= n - 1) largest element of the array.
Because in the ith pass of the array, in the jth iteration (for 1 <= j <= n - i), we
are checking if a[j] > a[j + 1], and a[j] will always be greater than a[j + 1] when
it is the largest element in range [1, n - i + 1]. Now we will swap it. This will
continue until ith largest element is at the (n - i + 1)th position of the array.
How Bubble Sort Works?
 We take an unsorted array for our example. Bubble
sort takes Ο(n2
) time so we're keeping it short and
precise.
 Bubble sort starts with very first two elements,
comparing them to check which one is greater.
 In this case, value 33 is greater than 14, so it is
already in sorted locations. Next, we compare 33
with 27.
 We find that 27 is smaller than 33 and these two
values must be swapped.
 The new array should look like this −
 Next we compare 33 and 35. We find that both are in
already sorted positions.
 Then we move to the next two values, 35 and 10.
 We know then that 10 is smaller 35. Hence they are
not sorted.
 We swap these values. We find that we have reached
the end of the array. After one iteration, the array
should look like this −
 Notice that after each iteration, at least one value
moves at the end.
 And when there's no swap required, bubble sorts
learns that an array is completely sorted.
 Now we should look into some practical aspects of
bubble sort.
Algorithm
Bubble Sort
 compares each pair of array element unless the
whole array is completely sorted in an ascending
order.
 This may cause a few complexity issues like what if the array
needs no more swapping as all the elements are already
ascending.
 To ease-out the issue
 use one flag variable swapped which will help if any swap has
happened or not.
 If no swap has occurred, i.e. the array requires no more
processing to be sorted, it will come out of the loop.
Complexity Analysis -TC of Bubble sort
 Best case scenario
 The best case scenario occurs when the array is
already sorted.
 no swapping will happen in the first iteration
(The swapped variable will be false
 when this happens, we break from the loop after the very first
iteration.
 time complexity in the best case scenario is O(n) because it has
to traverse through all the elements once.
Worst case and Average case scenario
 n-1 comparisons are done in the 1st pass, n-2 in 2nd
pass, n-3 in 3rd pass and so on.
 the total number of comparisons will be:
 Sum = (n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1 Sum = n(n-1)/2
 the time complexity is of the order n2
or O(n2
).
Space Complexity of Bubble sort
 The space complexity for the algorithm is O(1)
 because only a single additional memory space is required
 i.e. for temporary variable used for swapping
procedure bubbleSort( list : array of items )
loop = list.count;
for i = 0 to loop-1 do:
swapped = false
for j = 0 to loop-1 do:
/* compare the adjacent elements */
if list[j] > list[j+1] then
/* swap them */
swap( list[j], list[j+1] )
swapped = true
end if
end for
/*if no number was swapped that means array is
sorted now, break the loop.*/
if(not swapped) then
break
end if
end for
end procedure return list

IT Data-Structure-Sorting-Techniques.pptx

  • 1.
    Data Structure -Sorting Techniques
  • 2.
    Leaning Objectives  Describesorting  Discuss the type of sort  Applications of sorting  Apply the bubble sort algorithm in determine the output 
  • 3.
    Sorting  refers toarranging data in a particular format.  Sorting algorithm specifies the way to arrange data in a particular order.  Most common orders are in numerical or lexicographical order.  The importance of sorting lies in the fact that data searching can be optimized to a very high level, if data is stored in a sorted manner.  is also used to represent data in more readable formats. Following are some of the examples of sorting in real-life scenarios −  Telephone Directory − The telephone directory stores the telephone numbers of people sorted by their names, so that the names can be searched easily.  Dictionary − The dictionary stores words in an alphabetical order so that searching of any word becomes easy.
  • 4.
    In-place Sorting andNot-in- place Sorting
  • 5.
    Sorting algorithms  mayrequire some extra space for comparison and temporary storage of few data elements.  in-place sorting  do not require any extra space and sorting is said to happen in- place, or for example, within the array itself.  Example - Bubble sort  not-in-place sorting  the program requires space which is more than or equal to the elements being sorted.  Sorting which uses equal or more space is called .  Example - Merge-sort
  • 6.
    Stable and NotStable Sorting  Stable sorting  does not change the sequence of similar content in which they appear after sorting the contents .
  • 7.
     unstable sorting changes the sequence of similar content in which they appear after sorting the contents.
  • 8.
     Stability ofan algorithm matters when we wish to maintain the sequence of original elements, like in a tuple for example.
  • 9.
    Adaptive and Non-AdaptiveSorting Algorithm  Adaptive  if it takes advantage of already 'sorted' elements in the list that is to be sorted.  while sorting if the source list has some element already sorted, adaptive algorithms will take this into account and will try not to re-order them.  non-adaptive algorithm  is one which does not take into account the elements which are already sorted.  They try to force every single element to be re-ordered to confirm their sortedness.
  • 10.
  • 11.
     Increasing Order A sequence of values is said to be in increasing order, if the successive element is greater than the previous one.  For example, 1, 3, 4, 6, 8, 9 are in increasing order, as every next element is greater than the previous element.  Decreasing Order  A sequence of values is said to be in decreasing order, if the successive element is less than the current one.  For example, 9, 8, 6, 4, 3, 1 are in decreasing order, as every next element is less than the previous element.
  • 12.
     Non-Increasing Order A sequence of values is said to be in non-increasing order, if the successive element is less than or equal to its previous element in the sequence.  This order occurs when the sequence contains duplicate values.  For example, 9, 8, 6, 3, 3, 1 are in non-increasing order, as every next element is less than or equal to (in case of 3) but not greater than any previous element.  Non-Decreasing Order  A sequence of values is said to be in non-decreasing order, if the successive element is greater than or equal to its previous element in the sequence.  This order occurs when the sequence contains duplicate values.  For example, 1, 3, 3, 6, 8, 9 are in non-decreasing order, as every next element is greater than or equal to (in case of 3) but not less than the previous one.
  • 13.
  • 14.
    Bubble sort  isa simple sorting algorithm.  is comparison-based algorithm in which each pair of adjacent elements is compared and the elements are swapped if they are not in order.  is not suitable for large data sets as its average and worst case complexity are of Ο(n2 ) where n is the number of items.  This is the most simplest algorithm and inefficient
  • 15.
    Application of BubbleSort  used in educational purposes for helping students understand the foundations of sorting.  used to identify whether the list is already sorted. When the list is already sorted (which is the best-case scenario), the complexity of bubble sort is only O(n).  In real life, bubble sort can be visualised when people in a queue wanting to be standing in a height wise sorted manner swap their positions among themselves until everyone is standing based on increasing order of heights.
  • 16.
    Bubble Sort Algorithm compare adjacent elements and see if their order is wrong (i.e a[i] > a[j] for 1 <= i < j <= size of array; if array is to be in ascending order, and vice-versa).  If yes, then swap them.
  • 17.
    Bubble Sort Algorithm 1.Let us say, we have an array of length n. To sort this array we do the above step (swapping) for n - 1 passes. 2. In simple terms, first, the largest element goes at its extreme right place then, second largest to the last by one place, and so on. In the ith pass, the ith largest element goes at its right place in the array by swappings. 3. In mathematical terms, in ith pass, at least one element from (n - i + 1) elements from start will go at its right place.  That element will be the ith (for 1 <= i <= n - 1) largest element of the array. Because in the ith pass of the array, in the jth iteration (for 1 <= j <= n - i), we are checking if a[j] > a[j + 1], and a[j] will always be greater than a[j + 1] when it is the largest element in range [1, n - i + 1]. Now we will swap it. This will continue until ith largest element is at the (n - i + 1)th position of the array.
  • 18.
  • 19.
     We takean unsorted array for our example. Bubble sort takes Ο(n2 ) time so we're keeping it short and precise.  Bubble sort starts with very first two elements, comparing them to check which one is greater.
  • 20.
     In thiscase, value 33 is greater than 14, so it is already in sorted locations. Next, we compare 33 with 27.  We find that 27 is smaller than 33 and these two values must be swapped.
  • 21.
     The newarray should look like this −  Next we compare 33 and 35. We find that both are in already sorted positions.
  • 22.
     Then wemove to the next two values, 35 and 10.  We know then that 10 is smaller 35. Hence they are not sorted.  We swap these values. We find that we have reached the end of the array. After one iteration, the array should look like this −
  • 23.
     Notice thatafter each iteration, at least one value moves at the end.  And when there's no swap required, bubble sorts learns that an array is completely sorted.  Now we should look into some practical aspects of bubble sort.
  • 24.
  • 25.
    Bubble Sort  compareseach pair of array element unless the whole array is completely sorted in an ascending order.  This may cause a few complexity issues like what if the array needs no more swapping as all the elements are already ascending.  To ease-out the issue  use one flag variable swapped which will help if any swap has happened or not.  If no swap has occurred, i.e. the array requires no more processing to be sorted, it will come out of the loop.
  • 26.
    Complexity Analysis -TCof Bubble sort  Best case scenario  The best case scenario occurs when the array is already sorted.  no swapping will happen in the first iteration (The swapped variable will be false  when this happens, we break from the loop after the very first iteration.  time complexity in the best case scenario is O(n) because it has to traverse through all the elements once.
  • 27.
    Worst case andAverage case scenario  n-1 comparisons are done in the 1st pass, n-2 in 2nd pass, n-3 in 3rd pass and so on.  the total number of comparisons will be:  Sum = (n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1 Sum = n(n-1)/2  the time complexity is of the order n2 or O(n2 ).
  • 28.
    Space Complexity ofBubble sort  The space complexity for the algorithm is O(1)  because only a single additional memory space is required  i.e. for temporary variable used for swapping
  • 29.
    procedure bubbleSort( list: array of items ) loop = list.count; for i = 0 to loop-1 do: swapped = false for j = 0 to loop-1 do: /* compare the adjacent elements */ if list[j] > list[j+1] then /* swap them */ swap( list[j], list[j+1] ) swapped = true end if end for /*if no number was swapped that means array is sorted now, break the loop.*/ if(not swapped) then break end if end for end procedure return list