问题是
编写一个程序来排序字符串而不使用内置方法。
输入:“a390testai”
输出:“039aaiest”
我查看了一些论坛来寻找答案。我找到了这个论坛 In Python, how can I naturally sort a list of alphanumeric strings such that alpha characters sort ahead of numeric characters?但看起来没有任何解决方案使用选择或冒泡排序。 我的问题是:
1)在处理这样的问题时,我是否必须首先将字符串转换为列表?例如:str=list("exam123ple") ?为了避免“TypeError: 'str' object does not support item assignment”
2) 我尝试使用选择排序和冒泡排序,但它们没有返回预期结果。
#Selection sort
s="a390testai"
s=list(s) # convert to list
for i in range(len(s)):
min_val=min(s[i:])
min_val_pos=s.index(min_val)
s[i],s[min_val_pos]=s[min_val_pos],s[i]
print('s',s)
#Bubble sort
bs="a390testai"
bs=list(bs)
for i in range(0,len(bs)-1):
if bs[i]>bs[i+1]:
bs[i], bs[i+1]=bs[i+1],bs[i]
print(bs)
039testaai >> selection sort
390aestait >> bubble sort
预先感谢您的帮助和解释。
最佳答案
冒泡排序需要不止一次通过。每次通过时,您都会少通过一个元素,因为最后一个元素已经“冒泡”到位。
在您的选择排序中,s.index
返回第一个 匹配项的索引。所以如果你的字符串有重复的字母,它会返回错误的字母。您需要在 [i:]
范围内搜索并添加 i
,以找到正确的实例。
关于python - 在 Python 中对字母数字字符串进行排序-选择排序、冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55752245/