Quick Sort in Python
Quick Sort is a sorting algorithm that uses the divide and conquer strategy to split a list into smaller and larger sub-lists, and then recursively sort the sub-lists.
The steps are as follows:
Choose a pivot: Select an element from the array as the "pivot."
Partitioning: Reorder the array such that all elements smaller than the pivot are placed before it, and all elements greater than the pivot are placed after it. Elements equal to the pivot can go on either side. After partitioning, the pivot element is in its final position.
Recursively apply the above steps to the sub-lists of smaller and larger elements.
The recursion ends when the sub-lists contain only one or zero elements, which are inherently sorted.
The choice of the pivot is crucial to the performance of the algorithm.

Example
Here's an implementation of Quick Sort in Python:
# Function to handle partitioning the array
def partition(arr, low, high):
i = (low - 1) # Index of smaller element
pivot = arr[high] # Pivot element
for j in range(low, high):
# If current element is smaller than or equal to pivot
if arr[j] <= pivot:
i = i + 1 # Increment index of smaller element
arr[i], arr[j] = arr[j], arr[i] # Swap
arr[i + 1], arr[high] = arr[high], arr[i + 1] # Swap the pivot
return i + 1
# Quick Sort function
def quickSort(arr, low, high):
if low < high:
# pi is the partitioning index
pi = partition(arr, low, high)
# Recursively sort the sub-arrays
quickSort(arr, low, pi - 1)
quickSort(arr, pi + 1, high)
# Example array
arr = [10, 7, 8, 9, 1, 5]
n = len(arr)
quickSort(arr, 0, n - 1)
# Print the sorted array
print("Sorted array:")
for i in range(n):
print("%d" % arr[i])Output:
Sorted array: 1 5 7 8 9 10
In this example, the array [10, 7, 8, 9, 1, 5] is sorted using the Quick Sort algorithm, with the final sorted array being [1, 5, 7, 8, 9, 10]. The pivot selection and partitioning play a key role in how efficiently the array gets sorted.