def
partition(arr, low, high, mod) :
pivot
=
ord
(arr[high]);
i
=
(low
-
1
);
piv
=
pivot
%
mod;
for
j
in
range
(low, high) :
a
=
ord
(arr[j])
%
mod;
if
(a <
=
piv) :
i
+
=
1
;
arr[i], arr[j]
=
arr[j], arr[i]
arr[i
+
1
], arr[high]
=
arr[high], arr[i
+
1
]
return
(i
+
1
);
def
quickSort(arr, low, high, mod) :
if
(low < high) :
pi
=
partition(arr, low, high, mod);
quickSort(arr, low, pi
-
1
, mod);
quickSort(arr, pi
+
1
, high, mod);
return
arr
def
printArray(arr, size) :
for
i
in
range
(
0
, size) :
print
(arr[i], end
=
" "
);
if
__name__
=
=
"__main__"
:
arr
=
[
'g'
,
'e'
,
'e'
,
'k'
,
's'
];
n
=
len
(arr);
mod
=
8
;
arr
=
quickSort(arr,
0
, n
-
1
, mod);
printArray(arr, n);