# Sorting Implementations

Last updated: 2nd Dec, 2020

## Bubble Sort

Module: sorting()
Method : bubble_sort(arr,hint=False)
Uses : As the name suggests, this methods sorts the array as well as shows the time taken in seconds for sorting it. Also this method prints out the array after each iteration, so that one can visualize how bubble sort works.
Parameters : arr is an one dimensional array as python list, hint is passed False by default, by declaring hint=True a detailed description of the bubble sort algorithm can be found.

###### Python Code Example

    from edualgo import algorithms as al
    arr = [10,9,8,7,6]
    ping = al.sorting()
    ping.bubble_sort(arr)

    Output:
    [9, 10, 8, 7, 6]
    [9, 8, 10, 7, 6]
    [9, 8, 7, 10, 6]
    [9, 8, 7, 6, 10]
    [8, 9, 7, 6, 10]
    [8, 7, 9, 6, 10]
    [8, 7, 6, 9, 10]
    [7, 8, 6, 9, 10]
    [7, 6, 8, 9, 10]
    [6, 7, 8, 9, 10]
    Bubble Sort Runtime = 0.0009982585906982422 seconds

    [6, 7, 8, 9, 10]

For getting the hint just pass hint=True in the function like - bubble_sort(arr,True).

## Selection Sort

Module: sorting()
Method : selection_sort(arr,hint=False)
Uses : As the name suggests, this methods sorts the array as well as shows the time taken in seconds for sorting it. Also this method prints out the array after each iteration, so that one can visualize how selection sort works.
Parameters : arr is an one dimensional array as python list, hint is passed False by default, by declaring hint=True a detailed description of the selection sort algorithm can be found.

###### Python Code Example

    from edualgo import algorithms as al
    arr = [10,9,8,7,6,5,4]
    ping = al.sorting()
    ping.selection_sort(arr)

    Output:
    [4, 9, 8, 7, 6, 5, 10]
    [4, 5, 8, 7, 6, 9, 10]
    [4, 5, 6, 7, 8, 9, 10]
    [4, 5, 6, 7, 8, 9, 10]
    [4, 5, 6, 7, 8, 9, 10]
    [4, 5, 6, 7, 8, 9, 10]
    Selection Sort Runtime = 0.0 seconds

    [4, 5, 6, 7, 8, 9, 10]

## Bogo Sort

Module: sorting()
Method : bogo_sort(arr,asc=True,hint=False)
Uses : As the name suggests, this methods sorts the array as well as shows the time taken in seconds for sorting it.
Parameters : arr is an one dimensional array as python list, asc is passed True by default, which determines the ascending or descending order, when passed as False, it sorts in the descending order, hint is passed False by default, by declaring hint=True a detailed description of the selection sort algorithm can be found.

###### Python Code Example

    #for sorting in ascending order
    from edualgo import algorithms as al
    arr = [10,8,6,7,9,5,1,4]
    ping = al.sorting()
    ping.bogo_sort(arr,True)

    #for sorting in descending order
    ping.bogo_sort(arr,False)

    Output:
    #for ascending order
    Bogo Sort Runtime = 0.8378016948699951 seconds

    array([ 1,  4,  5,  6,  7,  8,  9, 10])

    #for descending order
    Bogo Sort Runtime = 0.8386266231536865 seconds

    array([10,  9,  8,  7,  6,  5,  4,  1])

## Insertion Sort

Module: sorting()
Method : insertion_sort(arr,hint=False)
Uses : As the name suggests, this methods sorts the array as well as shows the time taken in seconds for sorting it. Also this method prints out the array after each iteration, so that one can visualize how insertion sort works.
Parameters : arr is an one dimensional array as python list, hint is passed False by default, by declaring hint=True a detailed description of the selection sort algorithm can be found.

###### Python Code Example

    from edualgo import algorithms as al
    arr = [10,8,6,7,9,5,1,4]
    ping = al.sorting()
    ping.insertion_sort(arr)

    Output:
    [8, 10, 6, 7, 9, 5, 1, 4]
    [6, 8, 10, 7, 9, 5, 1, 4]
    [6, 7, 8, 10, 9, 5, 1, 4]
    [6, 7, 8, 9, 10, 5, 1, 4]
    [5, 6, 7, 8, 9, 10, 1, 4]
    [1, 5, 6, 7, 8, 9, 10, 4]
    [1, 4, 5, 6, 7, 8, 9, 10]
    Insertion Sort Runtime = 0.0 seconds

    [1, 4, 5, 6, 7, 8, 9, 10]

## Merge Sort

Module: sorting()
Method : merge_sort(arr,hint=False)
Uses : As the name suggests, this methods sorts the array as well as shows the time taken in seconds for sorting it.
Parameters : arr is an one dimensional array as python list, hint is passed False by default, by declaring hint=True a detailed description of the merge sort algorithm can be found.

###### Python Code Example

    from edualgo import algorithms as al
    arr = [10,8,6,7,9,5,1,4]
    ping = al.sorting()
    ping.merge_sort(arr)

    Output:
    Merge Sort Runtime = 0.0 seconds

    [1, 4, 5, 6, 7, 8, 9, 10]

## Heap Sort

Module: sorting()
Method : heap_sort(arr,hint=False)
Uses : As the name suggests, this methods sorts the array as well as shows the time taken in seconds for sorting it.
Parameters : arr is an one dimensional array as python list, hint is passed False by default, by declaring hint=True a detailed description of the merge sort algorithm can be found.

###### Python Code Example

    from edualgo import algorithms as al
    arr = [10,8,6,7,9,5,1,4]
    ping = al.sorting()
    ping.heap_sort(arr)

    Output:
    [1, 4, 5, 6, 7, 8, 9, 10]
    Heap Sort Runtime = 0.0 seconds

## Quick Sort

Module: sorting()
Method : quick_sort(arr,hint=False)
Uses : As the name suggests, this methods sorts the array as well as shows the time taken in seconds for sorting it.
Parameters : arr is an one dimensional array as python list, hint is passed False by default, by declaring hint=True a detailed description of the quick sort algorithm can be found.

###### Python Code Example

    from edualgo import algorithms as al
    arr = [10,8,6,7,9,5,1,4]
    ping = al.sorting()
    ping.quick_sort(arr)

    Output:
    [1, 4, 5, 6, 7, 8, 9, 10]
    Quick Sort Runtime = 0.0 seconds

### Are you an ambitious Python Developer ?

Do you want to contribute to our project ? We welcome every python lover to come forwards and have some fun with our source code. Steps to contibute:

- Send an email to the developer here regarding your willingness to contribute to the project.
- Have a read of our "How To Contribute" documentation here.

Keep coding, keep loving python