马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下是我写的一段关于冒泡排序的代码:str=[]
s=input()
x=1
i=0
j=0
while(x<len(s)):
if(s[x].isalnum and s[x]!=',' and s[x]!='[' and s[x]!=']'):
str.append(int(s[x]))
x+=1
else:
x+=1
while(i<len(str)):
while(j<len(str)-1):
if(str[j]<str[j+1]):
t=str[j]; str[j]=str[j+1]; str[j+1]=t;
j+=1
i+=1
print(str)
输入:[3,2,1,5,6,4]
期待输出:[6,5,4,3,2,1]
实际输出:[3, 2, 5, 6, 4, 1]
请问:
①为什么我写的冒泡排序没有起到应有的效果?
②为什么实际输出数字前有空格?
求大佬解答!!!
首先,针对第一个问题,你的冒泡排序算法有些问题。在你的代码中,你只进行了一次冒泡排序,而实际上,冒泡排序需要多次遍历才能保证所有元素都被正确排序。你需要在外层再套一层循环,用于控制冒泡排序的次数。修改后的代码如下:
str=[]
s=input()
x=1
while(x<len(s)):
if(s[x].isalnum and s[x]!=',' and s[x]!='[' and s[x]!=']'):
str.append(int(s[x]))
x+=1
else:
x+=1
for i in range(len(str)-1):
for j in range(len(str)-1-i):
if str[j] < str[j+1]:
str[j], str[j+1] = str[j+1], str[j]
print(str)
其次,关于实际输出数字前有空格的问题,这是因为你在输出列表时,每个元素之间都有一个空格。可以使用join函数来避免这个问题,修改后的代码如下:
str=[]
s=input()
x=1
while(x<len(s)):
if(s[x].isalnum and s[x]!=',' and s[x]!='[' and s[x]!=']'):
str.append(int(s[x]))
x+=1
else:
x+=1
for i in range(len(str)-1):
for j in range(len(str)-1-i):
if str[j] < str[j+1]:
str[j], str[j+1] = str[j+1], str[j]
print("[{}]".format(",".join(str)))
希望能够帮到你!
|