使用radix sort 基排序對字串進行排序

2021-10-23 15:20:46 字數 1489 閱讀 2642

這部分的**實現的操作是,對乙個列表裡面的字串按照字母順序排序,就像字典裡面的單詞排序一樣,舉例子如下:

input = ['jkttsszzo', 'zie', 'iukddrjdba', 'bwjahzwiv', 'yslzvnjdjg', 'xkm', 'aszcnljjl', 'syniimbq', 'hqgyd', 'itvis']

output = ['aszcnljjl', 'bwjahzwiv', 'hqgyd', 'itvis', 'iukddrjdba', 'jkttsszzo', 'syniimbq', 'xkm', 'yslzvnjdjg', 'zie']

input是排序之前的word列表,output是排序之後的word列表。

整體**如下所示:

#這裡是生成26個小寫字母的程式

char_list = [chr(x) for x in range(97,123)]

print(char_list)

word_list=# 利用程式自動生成乙個word列表,開始設定為空

for i in range(10): # 定義生成的word的數量

word = ''

length = random.randint(3,10) # 每個生成的word包含的字元的數量是3到10之間的隨機數,這個可以任意設定

for j in range(length ):

word = word + chr( random.randint(97,122) )

print(word_list)

def sort_word_list(word_list):

max_length = len(word_list[0])

for i in range(1,len(word_list)):#獲得這個列表中最長的字串的長度

if len(word_list[i]) > max_length:

max_length = len( word_list[i] )

print(max_length)

for i in range(max_length):

bucket = {}

for x in char_list:

bucket[x] =

for x in word_list:

temp_word = x + "z"*(max_length - len( x ))

else:

temp_word = x

index = 0

for k in char_list:

if (len(bucket[k])) != 0:

for y in bucket[k]:

word_list[index] = y

index = index + 1

print(word_list)

sort_word_list(word_list)

注釋基本上都在**中進行了講解。

基數排序 RadixSort

基數排序 以整形為例 將整形10進製按每位拆分,然後從低位到高位依次比較各個位。主要分為兩個過程 1 分配,先從個位開始,根據位值 0 9 分別放到0 9號桶中 比如53,個位為3,則放入3號桶中 2 收集,再將放置在0 9號桶中的資料按順序放到陣列中 重複 1 2 過程,從個位到最高位 比如32位...

Radix sort 基數排序

有關 gpu並行程式設計 英文 cuda programming a developer s guide to parallel computing with gpus 第六章 中基數排序,其中並行排序的多執行緒排序,由於沒有具體較為詳細的介紹,對於初次接觸多執行緒的人略微困難。本文較為詳細的介紹此...

基數排序 Radix Sort

基數排序是在某種情況下比快速排序還快的排序.當然了,計數排序 counting sort 也有可能比快速排序快.計數排序非常容易理解,時間複雜度是o max a i 如果資料範圍很小的話,計數排序有巨大優勢.而基數排序,則更進一步,對每一位進行計數排序.這樣時間複雜度降為o n log max a ...