使用radix sort 基排序对字符串进行排序

这部分的代码实现的操作是,对一个列表里面的字符串按照字母顺序排序,就像字典里面的单词排序一样,举例子如下:

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) )
    word_list.append(word)

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:
            if len(x)<max_length: # 如果某个word的长度小于最长的字符串的长度,那么就在结尾处增加'z'补足长度 ,比如apple 变为 applezzzzz
                temp_word = x + "z"*(max_length - len( x ))
            else:
                temp_word = x
            bucket[temp_word[max_length - i - 1]].append(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)

注释基本上都在代码中进行了讲解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值