У меня есть список слов,
array = ['Alien', 'and', 'Alien', 'агрессивный', 'Alien', 'существо', 'и']
Однако, каждый раз, когда я сортирую это, я получаю
массив = ['агрессивный', ' иностранец ', ' и ', ' и ', ' иностранец ', ' пришелец ',' существо ']
что неправильно, потому что "пришельцы" разделены "и" (одни и те же слова должны быть сгруппированы вместе).
Может кто-нибудь указать, в чем проблема с моим радиксом, который дает мне эту проблему? Заранее спасибо!
def wordSort(word_list):
max_len_word = find_max_char(word_list)
radix_sort(word_list, max_len_word)
def find_max_char(word_list):
max = 0
for word in word_list:
if max < len(word):
max = len(word)
return max
def radix_pass(array, base, digit):
counter = [0 for i in range(base-1)]
for i in range(1, len(array)):
counter[get_digit(array[i], digit, True)] += 1
position = [0 for i in range(base)]
for value in range(base):
position[value] = position[value-1] + counter[value-1]
temp = [0 for i in range(len(array))]
for i in range(len(array)):
temp[position[get_digit(array[i], digit, True)]] = array[i]
position[get_digit(array[i], digit, True)] += 1
return temp
def get_digit(array_i, digit, boolean):
if boolean == True:
if len(array_i) - 1 < digit:
return 0
else:
return ord(array_i[digit]) - 96
def radix_sort(array, digit):
base = 27
for i in range(digit-1, -1, -1):
sorted_array = radix_pass(array, base, i)
return sorted_array