美文网首页
HJ14 字符串排序

HJ14 字符串排序

作者: Ribosome_He | 来源:发表于2021-10-04 21:41 被阅读0次

方法一:自带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)

    

相关文章

  • HJ14 字符串排序

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

  • HJ14 字符串排序

    给定 n 个字符串,请对 n 个字符串按照字典序排列。 数据范围: 1 \le n \le 1000 \1≤n≤1...

  • HJ14 字符串排序

     重载less比较符号。  c++的字符串可以直接比较。可以直接调用,最终结果就是按照升序排列。

  • js算法

    排序算法 冒泡排序 快速排序 字符串操作 判断回文字符串 翻转字符串 反向遍历字符串 function reve...

  • JS排序

    1、数字排序 2、字符串排序 3、中文排序 4、中英文数字字符串排序

  • nodejs实现字符串排序(高位优先&低位优先)

    字符串排序 网上很多都是c实现的,这里我写一个nodejs实现的 低位优先字符串排序 高位优先字符串排序

  • 常见算法的js实现

    排序算法 1、冒泡排序 2、快速排序 3、二路归并 字符串操作 1、判断回文字符串 2、翻转字符串 思路一:反向遍...

  • 常见算法的 js 实现

    排序算法 1、冒泡排序 2、快速排序 3、二路归并 字符串操作 1、判断回文字符串 2、翻转字符串 思路一:反向遍...

  • js相关算法

    一、排序算法 1、冒泡排序 2、快速排序 3、二路归并 二、字符串操作 1、判断回文字符串 2、翻转字符串 思路一...

  • Android中字符串操作简介

    字符串排序(冒泡排序) 字符串比较大小 反转字符串 获取某段字符 判断字符串中出现的子字符串的次数

网友评论

      本文标题:HJ14 字符串排序

      本文链接:https://www.haomeiwen.com/subject/rekwnltx.html