mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-01-19 00:37:02 +00:00
Remove duplicate counting sort (#376)
This commit is contained in:
parent
38dbaef5f5
commit
0e76ee9076
|
@ -57,8 +57,14 @@ def counting_sort(collection):
|
||||||
|
|
||||||
return ordered
|
return ordered
|
||||||
|
|
||||||
|
def counting_sort_string(string):
|
||||||
|
return ''.join([chr(i) for i in counting_sort([ord(c) for c in string])])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
# Test string sort
|
||||||
|
assert "eghhiiinrsssttt" == counting_sort_string("thisisthestring")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
raw_input # Python 2
|
raw_input # Python 2
|
||||||
except NameError:
|
except NameError:
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
from __future__ import print_function
|
|
||||||
# Python program for counting sort
|
|
||||||
|
|
||||||
# This is the main function that sort the given string arr[] in
|
|
||||||
# in the alphabetical order
|
|
||||||
def countSort(arr):
|
|
||||||
|
|
||||||
# The output character array that will have sorted arr
|
|
||||||
output = [0 for i in range(256)]
|
|
||||||
|
|
||||||
# Create a count array to store count of inidividul
|
|
||||||
# characters and initialize count array as 0
|
|
||||||
count = [0 for i in range(256)]
|
|
||||||
|
|
||||||
# For storing the resulting answer since the
|
|
||||||
# string is immutable
|
|
||||||
ans = ["" for _ in arr]
|
|
||||||
|
|
||||||
# Store count of each character
|
|
||||||
for i in arr:
|
|
||||||
count[ord(i)] += 1
|
|
||||||
|
|
||||||
# Change count[i] so that count[i] now contains actual
|
|
||||||
# position of this character in output array
|
|
||||||
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 output array to arr, so that arr now
|
|
||||||
# contains sorted characters
|
|
||||||
for i in range(len(arr)):
|
|
||||||
ans[i] = output[i]
|
|
||||||
return ans
|
|
||||||
|
|
||||||
# Driver program to test above function
|
|
||||||
arr = "thisisthestring"
|
|
||||||
ans = countSort(arr)
|
|
||||||
print ("Sorted string array is %s" %("".join(ans)))
|
|
Loading…
Reference in New Issue
Block a user