Quicksort Algorithm Implementation with Python

QuickSort is an O(nlogn) efficient sorting algorithm, serving as systematic method for placing elements of an array in order. Quicksort is a comparison sort, meaning that it can sort items of any type for which a “less-than” relation (formally, a total order) is defined. In efficient implementations it is not a stable sort, meaning that the relative order of equal sort items is not preserved. Quicksort can operate in-place on an array, requiring small additional amounts of memory to perform the sorting. It is very similar to selection sort, except that it does not always choose worst-case partition.
Source: https://en.wikipedia.org/wiki/Quicksort
Below are 2 versions of the Quicksort Algorithm Implementation with Python. The first version is easy, but use more memory. The second version use the memory very efficiently.

I- QuickSort Algorithm Implementation with Python (Memory intensive version)

Output: II- Quicksort Algorithm Implementation with Python (with Memory Optimisation) III- QuickSort Algorithm Implementation with Python for Both Methods with duration captured Output Binary Search Algorithm Implementation with Python

Binary Search  is an algorithm that finds the position of a target in a sorted array. Binary search compares the target value to the middle element of the array. If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target value, and repeating this until the target value is found. If the search ends with the remaining half being empty, the target is not in the array. Even though the idea is simple, implementing binary search correctly requires attention to some subtleties about its exit conditions and midpoint calculation, particularly if the values in the array are not all of the whole numbers in the range.

Below the binary search algorithm implementation  with python:

``` #Test_Binary_Search.py Array=[-2,1,0,4,7,8,10,13,16,17, 21,30,45,100,150,160,191,200] Target=201 n=len(Array) def binarySearch(A,T): L=0 R=n-1 while (L <= R): m=int((L + R)/2) if ( A[m] < T ): L = m +1 elif (A[m] > T): R = m-1 else: print("Target is at %s:" % m) return m print("Target not found") return "unsuccessful"```

``` ```

```binarySearch(Array, Target) ```