From 850512c2ab4ea1b6a0f3c952d426b6aa230bb3f1 Mon Sep 17 00:00:00 2001 From: P Karthik Chowdary <36704161+Yggdrasil09@users.noreply.github.com> Date: Wed, 26 Jun 2019 02:12:43 +0530 Subject: [PATCH] Added an implementation code in python (#33305) --- .../sorting-algorithms/radix-sort/index.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/guide/english/algorithms/sorting-algorithms/radix-sort/index.md b/guide/english/algorithms/sorting-algorithms/radix-sort/index.md index ad40592a42..7184387fd1 100644 --- a/guide/english/algorithms/sorting-algorithms/radix-sort/index.md +++ b/guide/english/algorithms/sorting-algorithms/radix-sort/index.md @@ -97,7 +97,38 @@ void radixsort(ll arr[],int n,int maxx){ //maxx is the maximum elemen } } ``` +An implementation in python : +``` +def counting_sort(arr, max_value, get_index): + counts = [0] * max_value + + # Counting - O(n) + for a in arr:s + counts[get_index(a)] += 1 + + # Accumulating - O(k) + for i, c in enumerate(counts): + if i == 0: + continue + else: + counts[i] += counts[i-1] + + # Calculating start index - O(k) + for i, c in enumerate(counts[:-1]): + if i == 0: + counts[i] = 0 + counts[i+1] = c + + ret = [None] * len(arr) + # Sorting - O(n) + for a in arr: + index = counts[get_index(a)] + ret[index] = a + counts[get_index(a)] += 1 + + return ret +``` ### More Information: