Quick Sort Algorithm Explanation.
In Quick Sort, we have to choose a pivot element, a chosen value from the array around which partitioning occurs. This pivotal choice significantly influences the algorithm's efficiency. Our goal is to select a pivot that helps create balanced partitions, ensuring the array gets divided into approximately equal halves during each recursive call.
Select the First and Last Element as Pivot:
- Selecting the first and last element as the pivot is simple and efficient in implementation. However, this approach might lead to unbalanced partitions if the array is already sorted or nearly sorted.
Select the Last Element as Pivot:
- Choosing the middle element of the array as the pivot. This method often provides a better pivot choice, especially for larger datasets.
Quick Sort Algorithm Steps:
- Step 1: Select an element from the array as the pivot (commonly the last element).
- Step 2: Rearrange the elements in the array so that elements smaller than the pivot are placed before it, while elements larger than the pivot are placed after it.
- Step 3: After Step 2, the pivot assumes its correct position in the sorted array.
- Step 4: Apply Quick Sort recursively to the subarrays formed by partitioning until the entire array is sorted.
Python Program for Quick Sort Algorithm.
Below is the code implementation of the Quick Sort Algorithm using Python programming.
# Python code implementation of Quick Sort Algorithm def partition(arr, low, high): # Choose the last element as the pivot pivot = arr[high] i = low - 1 # Index of smaller element for j in range(low, high): if arr[j] < pivot: i += 1 arr[i], arr[j] = arr[j], arr[i] arr[i + 1], arr[high] = arr[high], arr[i + 1] return i + 1 def quick_sort(arr, low, high): if low < high: # Partitioning index pi = partition(arr, low, high) # Recursively sort elements before and after partition quick_sort(arr, low, pi - 1) quick_sort(arr, pi + 1, high) # Example usage: arr = [64, 34, 25, 12, 22, 11, 90] quick_sort(arr, 0, len(arr) - 1) print("Sorted array:", arr)
Sorted array: [11, 12, 22, 25, 34, 64, 90]
Time Complexity: In the best and average cases, where the pivot consistently divides the array into roughly equal halves, Quick Sort achieves a time complexity of O(n log n). However, in the worst-case scenario, where the pivot selection leads to highly unbalanced partitions, Quick Sort's time complexity degrades to O(n^2).
Space Complexity: In the average case, the maximum space required for the recursive call stack is O(log n), as the array gets divided into smaller segments.
No comments:
Post a Comment