In this code snippet, we’ll show an example of a Python language function to perform a quick sort against a list of items returning a sorted list.
Python language functions to perform a quick sort against a list of items returning a sorted list
import random def swap(tab: list, pivot_index: int, last_index: int) -> None: """ Swaps the elements in a list. Args: tab (list): The list containing the elements to be swapped. pivot_index (int): The index of the first element to be swapped. last_index (int): The index of the second element to be swapped. Returns: None: This function does not return anything. """ tmp = tab[pivot_index] tab[pivot_index] = tab[last_index] tab[last_index] = tmp def partition(tab: list, first_index: int, last_index: int, pivot) -> int: """ Partition the given list `tab` based on the pivot element. Args: tab (list): The list to be partitioned. first_index (int): The index of the first element in the range to be partitioned. last_index (int): The index of the last element in the range to be partitioned. pivot: The pivot element used for partitioning. Returns: int: The index of the pivot element after partitioning. """ swap(tab, pivot, last_index) j = first_index for i in range(first_index, last_index): if tab[i] <= tab[last_index]: swap(tab, i, j) j += 1 swap(tab, last_index, j) return j def pivot_choice(tab: list, first_index: int, last_index: int): """ Generate a random pivot choice for quicksort. Parameters: tab (list): The list to choose a pivot from. first_index (int): The index of the first element in the range. last_index (int): The index of the last element in the range. Returns: int: The randomly chosen pivot value. """ return random.randint(first_index, last_index) def quick_sort(tab: list, first_index: int, last_index: int): """ Sorts a list using the quicksort algorithm. Parameters: - tab (list): The list to be sorted. - first_index (int): The index of the first element to be considered in the sorting. - last_index (int): The index of the last element to be considered in the sorting. Returns: - None Algorithm: - Choose a pivot element from the list. - Partition the list so that all elements smaller than the pivot are on its left, and all elements greater than the pivot are on its right. - Recursively apply the quicksort algorithm to the left and right partitions of the list. """ if first_index < last_index: pivot = pivot_choice(tab, first_index, last_index) pivot = partition(tab, first_index, last_index, pivot) quick_sort(tab, first_index, pivot-1) quick_sort(tab, pivot+1, last_index) def main(): numbers = [-50, 25, 10, 1, -4, 7.8] print(f"Here are the list: {numbers}") quick_sort(numbers, 0, len(numbers)-1) print(f"Here are the sorted list: {numbers}") if __name__ == "__main__": main()
All code from this code snippet package can be downloaded here.
MIT Licensed Code – See License
Tags: python, quick sort, sorted list, list, python list, list of numbers, quick sort algorithm