我有一個學校項目,我需要使用不同的排序算法對所有種類的數據類型進行排序。基數排序工作得很好,但除了整數之外,它不能排序。我可能不會添加除整數以外的排序結果,因爲每個數據類型都會按整數排序。將字符串轉換爲數字(不解析)爲基數排序
這就是說,我想知道是否有更好的方法將字符串轉換爲整數?這就是我帶來的。我不想超越智能python,儘可能地使用標準函數。
def charToHex(char):
return hex(ord(char))[2:]
def stringToHex(text):
t = ''
for char in text:
t += charToHex(char)
return t
def stringToInt(text):
return int(stringToHex(text), 16)
print stringToInt('allo')
print stringToInt('allp')
print stringToInt('all')
它確實很好,但我很樂意知道是否有更好的方法來處理這個問題。對於什麼是值得的,用基數排序除了整數以外的其他排序聽起來毫無意義。因爲即使您可以對整數列表進行排序。您必須將所有鍵的值返回到列表中。
我曾想過要做那樣的事情。對於我列表中的每個值,獲取一個整數鍵。將該密鑰放入哈希表中,並將該值放入該哈希表的列表中。用整數鍵替換列表中的值,然後對鍵列表進行排序。
對於排序列表中的每個鍵,獲取該鍵的值列表並彈出一個項目。將該項目放入列表中並繼續。
我也想知道是否有一種方法來優化這個過程,以便使用基數排序來代替不需要任何轉換的其他排序方式。項目清單中的金額可能會超出50000
編輯
其實這裏的代碼不會對不同大小的字符串的工作。我不太確定如何檢查。用空格填充字符串似乎可行。
def getMaxLen(ls):
lenght = 0
for text in ls:
lenght = max(lenght, len(text))
return lenght
def convertList(ls):
size = getMaxLen(ls)
copy = ls[:]
for i, val in enumerate(copy):
copy[i] = stringToInt(val.ljust(size, ' '))
return copy
print convertList(["allo", "all", "bal"])
+1鏈接到文章,一個很好的閱讀! – 2013-05-06 14:25:15