字符串排序

思路1:將字符串看作二十六進(jìn)制的數(shù)字,然后對數(shù)字進(jìn)行排序
思路2:線性排序
NND,最后發(fā)現(xiàn)C語言用strcmp然后就可以用常用的判別法進(jìn)行

def char_to_value(char):
    if char == ' ':
        return 0

    return ord(char) - ord('a') + 1


def str_to_value(str,align_len):
    value = 0
    for i in range(align_len):
        value = value*26 + char_to_value(str[i])
    return value

# 將字符串看作26進(jìn)制的數(shù)字
def str_order(strs,align_len):
    values = []
    for str in strs:
        if len(str)<align_len:
            str += ' '*(align_len-len(str))
        values.append(str_to_value(str,align_len))
    select_sort(values,strs)


def select_sort(values,strs):
    for i in range(len(values)):
        min = i
        for j in range(min+1,len(values)):
            if values[min] > values[j]:
                min = j
        if min!=i:
            values[min],values[i] = values[i],values[min]
            strs[min], strs[i] = strs[i], strs[min]


def main():
    strs = ['abcde','bcda','abcda']
    str_order(strs,5)
    print(strs)


if __name__ == '__main__':
    main()

思路2:

# 因?yàn)榭崭竦腶scii小于‘a(chǎn)’,不用特殊處理
def order_by_specific_char(strs,char_index):
    length = len(strs)

    for i in range(length):
        min = i
        for j in range(min+1,length):
            # 兩個對應(yīng)字符都為空
            if len(strs[min]) <= char_index:
                pass
            # 只有min對應(yīng)字符為空
            elif len(strs[j]) <= char_index:
                min = j
            elif ord(strs[min][char_index]) > ord(strs[j][char_index]):
                min = j
        if min!=i:
            strs[min],strs[i] = strs[i],strs[min]


def str_order2(strs,align_len):
    for i in range(align_len):
        # 后面的字符開始
        i = align_len - i - 1
        print(i)
        order_by_specific_char(strs,i)


def main():
    strs = ['abcde','abcdf','abcda']
    str_order2(strs,5)
    print(strs)


if __name__ == '__main__':
    main()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容