def partition(array, low, high): pivot = array[high] i = low - 1 for j in range(low, high): if array[j] <= pivot: i += 1 array[i], array[j] = array[j], array[i] array[i+1], array[high] = array[high], array[i+1] return i+1def quicksort(array, low=0, high=None): if high is None: high = len(array) - 1 if low < high: pivot_index = partition(array, low, high) quicksort(array, low, pivot_index-1) quicksort(array, pivot_index+1, high)my_array = [64, 34, 25, 12, 22, 11, 90, 5]quicksort(my_array)print("Sorted array:", my_array)
Question
def partition(array, low, high): pivot = array[high] i = low - 1 for j in range(low, high): if array[j] <= pivot: i += 1 array[i], array[j] = array[j], array[i] array[i+1], array[high] = array[high], array[i+1] return i+1def quicksort(array, low=0, high=None): if high is None: high = len(array) - 1 if low < high: pivot_index = partition(array, low, high) quicksort(array, low, pivot_index-1) quicksort(array, pivot_index+1, high)my_array = [64, 34, 25, 12, 22, 11, 90, 5]quicksort(my_array)print("Sorted array:", my_array)
Solution
This is a Python script that implements the QuickSort algorithm. QuickSort is a divide-and-conquer algorithm that works by selecting a 'pivot' element from the array and partitioning the other elements into two sub-arrays, according to whether they are less than or greater than the pivot. The sub-arrays are then recursively sorted.
Here's a step-by-step explanation of the code:
-
The
partitionfunction takes an array and two indices,lowandhigh, as input. It selects the element at thehighindex as the pivot and initializesitolow - 1. -
It then iterates over the elements in the range
lowtohigh. If an element is less than or equal to the pivot, it incrementsiand swaps theith element with the current element. -
After the loop, it swaps the
i+1th element with the pivot, effectively placing the pivot at its correct position in the sorted array. It then returnsi+1, the index of the pivot. -
The
quicksortfunction takes an array and optionally, two indiceslowandhigh, as input. Ifhighis not provided, it is set to the last index of the array. -
If
lowis less thanhigh, it calls thepartitionfunction to get the pivot index. It then recursively sorts the elements to the left and right of the pivot. -
Finally, it creates an array
my_array, sorts it using thequicksortfunction, and prints the sorted array.
Similar Questions
Consider a modification to QuickSort where each time the partition function is called, the median of the partition array is always found (in constant time) and used as the pivot. The worst-case running time for the algorithm is: Group of answer choices Θ(nlogn) Θ(n^2) Θ(n) Θ(logn)
You are given an array A consisting of N unique integers. Your task is to implement the Quick Sort algorithm and print the intermediate state of the array at each iteration. For each iteration of the Quick Sort algorithm, the array should be partitioned around a pivot element, and you should print the array in its partially sorted form after each partitioning step.GuidelineInstead of copying the array into multiple sub-arrays, use indices to keep track of the different sub-arrays. You can pass the indices to a modified partition method. The partition method should partition the sub-array and then return the index location where the pivot gets placed, so you can then call partition on each side of the pivot.Always select the last element in the 'sub-array' as a pivot.Partition the left side and then the right side of the sub-array.Print out the whole array at the end of every partitioning method.An array of length or less will be considered sorted, and there is no need to sort or to print them.Since you cannot just create new sub-arrays for the elements, partition method will need to use another trick to keep track of which elements are greater and which are lower than the pivot.The In-place TrickIf an element is lower than the pivot, you should swap it with a larger element on the left-side of the sub-array.Greater elements should remain where they are.At the end of the partitioning method, the pivot should be swapped with the first element of the right partition, consisting of all larger elements, of the sub-array.To ensure that you don't swap a small element with another small element, use an index to keep track of the small elements that have already been swapped into their "place".Input Format:The first line contains a single integer N, denoting the size of array A. The next line contains N space-separated integers denoting the elements of array A.Output Format:Print N space-separated integers on a single line after each partitioning step of the Quick Sort algorithm.Constraints:1 ≤ N ≤ 100 1 ≤ A[i] ≤ 100Sample input8 1 3 9 8 2 7 5 4Sample output1 3 2 4 9 7 5 8 1 2 3 1 2 3 4 7 5 8 9 1 2 3 4 5 7 1 2 3 4 5 7 8 9
When sorting the following array in ascending order with quick sort:16 6 14 12 8 18 4 20 10if choosing the 4th element (i.e. 8) as the pivot, which of the following choices represents the array at one of the middle steps when partitioning the array?
Quicksort uses Hoare partitioning. Assume an array contains ten keys: 6 3 1 7 9 5 8 2 4 0. After a first round of simple Hoare partitioning (not median-of-three), the array looks like so: Group of answer choices 5 3 1 0 4 2 6 8 9 7 2 3 1 0 4 5 6 8 9 7 3 1 5 2 4 0 6 7 9 8 2 3 0 1 5 4 6 7 8 9 5 3 1 4 0 2 6 7 9 8
Given numbers = {22 43 72 55 54 90 62}, pivot = 55What is the low partition after the partitioning algorithm is completed?{}What is the high partition after the partitioning algorithm is completed?
Upgrade your grade with Knowee
Get personalized homework help. Review tough concepts in more detail, or go deeper into your topic by exploring other relevant questions.