Python Tutorial (33) – Example: Counting sort

Time: Column:Python views:228

Counting Sort in Python

Counting sort is an algorithm that sorts by transforming the input data into keys and storing these keys in an auxiliary array. As a linear time complexity sorting algorithm, counting sort requires the input data to have a specific range of integers.

Python Tutorial (33) – Example: Counting sort

Example:

# Function to perform counting sort
def countSort(arr):

    # Initialize output array
    output = [0 for i in range(256)]

    # Initialize count array with zero
    count = [0 for i in range(256)]

    # Initialize result array
    ans = ["" for _ in arr]

    # Store the count of each character
    for i in arr:
        count[ord(i)] += 1

    # Store the cumulative count
    for i in range(256):
        count[i] += count[i - 1]

    # Build the output character array
    for i in range(len(arr)):
        output[count[ord(arr[i])] - 1] = arr[i]
        count[ord(arr[i])] -= 1

    # Copy the sorted characters into ans array
    for i in range(len(arr)):
        ans[i] = output[i]

    return ans

# Input string
arr = "wwwrunoobcom"

# Call countSort function
ans = countSort(arr)

# Print the sorted character array
print("Sorted character array: %s" % ("".join(ans)))

Output:

Sorted character array: bcmnoooruwww

In this example, the string "wwwrunoobcom" is sorted using the counting sort algorithm. The sorted result is "bcmnoooruwww", where the characters are arranged in lexicographical order. Counting sort works efficiently for characters as they have a well-defined range, making this algorithm particularly useful for sorting strings.