HJ14 字符串排序

方法一:自带sort方法排序
方法二:递归,快排

#字典序又称为字母顺序
# import sys
# l = [d.strip('\n') for d in sys.stdin.readlines()]
# l.pop(0)
# l.sort()
# for i in l:
#     print(i)

#递归,快排
def cmp(str1,str2): #对比两个字符串大小,str1小的话则返回True,str1为空的话,说明str1小于str2(即str1短于str2)
    if not str1:
        return True
    elif not str2:
        return False
    if str1[0] == str2[0]: #如果str1和str2都不会空,比较第一个字符,若相同,则递归比较剩下的字符
        st1 , st2 = str1[1:],str2[1:] #若list有两个字符,a[2]会越界,a[2:]会返回空列表
        return cmp(st1, st2)
    elif str1[0] < str2[0]:
        return True
    return False
#快排算法
def quicksort(stringList):
    if not stringList : #传入空列表,返回空列表,递归的最后一层
        return stringList
    less = []
    big = []
    temp = stringList.pop() #取最后一个字符作为标志位
    for i in stringList:
        if cmp(i, temp):
            less.append(i)
        else :
            big.append(i)
    return quicksort(less) + [temp] + quicksort(big) #当传入的stringList只有一个字符,less和big都为空,此时返回它自己
#[]+[1]+[]  等于 [1]

import sys
l = [d.strip('\n') for d in sys.stdin.readlines()]
l.pop(0)
for i in quicksort(l):
    print(i)

    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容