Quick Sort Implementation
Problem Statement
Implement Quick Sort, a divide-and-conquer algorithm that sorts an array by selecting a pivot and partitioning the array around it.
Example
Input: array = [64, 34, 25, 12, 22, 11, 90]
Output: [11, 12, 22, 25, 34, 64, 90]
Code
Java
Python
JavaScript
public class Solution { public void quickSort(int[] arr, int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } private int partition(int[] arr, int low, int high) { int pivot = arr[high]; int i = low - 1; for (int j = low; j < high; j++) { if (arr[j] <= pivot) { i++; int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } int temp = arr[i + 1]; arr[i + 1] = arr[high]; arr[high] = temp; return i + 1; } }
def quick_sort(arr, low, high): if low < high: pi = partition(arr, low, high) quick_sort(arr, low, pi - 1) quick_sort(arr, pi + 1, high) def partition(arr, low, high): pivot = arr[high] i = low - 1 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 # Example usage arr = [64, 34, 25, 12, 22, 11, 90] quick_sort(arr, 0, len(arr) - 1) print(arr)
function quickSort(arr, low, high) { if (low < high) { let pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } function partition(arr, low, high) { let pivot = arr[high]; let i = low - 1; for (let j = low; j < high; j++) { if (arr[j] <= pivot) { i++; [arr[i], arr[j]] = [arr[j], arr[i]]; } } [arr[i + 1], arr[high]] = [arr[high], arr[i + 1]]; return i + 1; } // Example usage let arr = [64, 34, 25, 12, 22, 11, 90]; quickSort(arr, 0, arr.length - 1); console.log(arr);
Explanation
- Choose a pivot (here, the last element).
- Partition the array so elements smaller than the pivot are on the left, larger on the right.
- Recursively apply the same process to the sub-arrays.
- Continue until the entire array is sorted.
Note
Average time complexity is O(n log n), worst case is O(n²) if the pivot is poorly chosen. Space complexity is O(log n) due to recursion.