获取bubblesort python的索引和值
我实现了一个用于对数字列表进行排序的冒泡排序,我尝试使用enumerate来获取索引和值,但由于某种原因,在中不起作用。我期望类似于[(索引,值)],但是输出也可以不同,只要我可以看到带有值部分的索引。获取bubblesort python的索引和值,python,bubble-sort,enumerate,Python,Bubble Sort,Enumerate,我实现了一个用于对数字列表进行排序的冒泡排序,我尝试使用enumerate来获取索引和值,但由于某种原因,在中不起作用。我期望类似于[(索引,值)],但是输出也可以不同,只要我可以看到带有值部分的索引。 结果[(4,25)、(2,30)、(3,31)、(1,33)、(0,38)]。 希望有一个简单的改变 def sortPercent(unsortedArr): n = len(unsortedArr) for i, percent in enumerate(range(n-1)
结果[(4,25)、(2,30)、(3,31)、(1,33)、(0,38)]。
希望有一个简单的改变
def sortPercent(unsortedArr):
n = len(unsortedArr)
for i, percent in enumerate(range(n-1)):
for j, percent in enumerate(range(0, n-i-1)):
if unsortedArr[j] > unsortedArr[j + 1]:
unsortedArr[j],unsortedArr[j+1] = unsortedArr[j+1], unsortedArr[j]
return unsortedArr
if __name__ == "__main__":
unsortedArr = [38, 33, 30, 31, 25]
print(sortPercent(unsortedArr))
您根本不必使用
enumerate()
,此函数定义只需简单的代码即可:
def排序百分比(未排序):
n=长度(未排序)
unsortedar=[(i,unsortedar[i]),用于范围(n)中的i]
对于范围(n-1)内的i:
对于范围(0,n-i-1)内的j:
如果取消排序[j][1]>取消排序[j+1][1]:
unsortedar[j],unsortedar[j+1]=unsortedar[j+1],unsortedar[j]
返回反排序器
您必须在未排序的arr上使用enumerate
def sortPercent(unsortedArr):
unsortedArr = list(enumerate(unsortedArr)) # [(0, 38), (1, 33), (2, 30), (3, 31), (4, 25)]
n = len(unsortedArr)
for i, percent in enumerate(range(n-1)):
for j, percent in enumerate(range(0, n-i-1)):
if unsortedArr[j][1] > unsortedArr[j + 1][1]: # when j = 0, unsortedArr[j] = (0,38), unsortedArr[j][1] = 38, unsortedArr[j+1][1]=30
unsortedArr[j],unsortedArr[j+1] = unsortedArr[j+1], unsortedArr[j]
return unsortedArr
unsortedArr = [38, 33, 30, 31, 25]
print(sortPercent(unsortedArr))
# [(4, 25), (2, 30), (3, 31), (1, 33), (0, 38)]
你在
range()上使用enumerate
,但是没有range()
我得到了错误,int对象不是Iterablew超级好谢谢,你能解释一下如果unsortedar[j][1]>unsortedar[j+1][1]:
[1]在那里做什么吗?当你枚举时,它会给你[(0,value1),(1,value2)…(N-1,valueN)]
。我使用arr[1]来比较值(例如,值1),编辑了答案。第一部分很清楚,但我仍然没有得到第二部分与arr[1]的比较。
def sortPercent(unsortedArr):
n = len(unsortedArr)
for i, percent in enumerate(range(n-1)):
for j, percent in enumerate(range(0, n-i-1)):
if unsortedArr[j] > unsortedArr[j + 1]:
unsortedArr[j],unsortedArr[j+1] = unsortedArr[j+1], unsortedArr[j]
return unsortedArr
if __name__ == "__main__":
unsortedArr = [38, 33, 30, 31, 25]
sortedArr=sortPercent(unsortedArr.copy())
for i in range (len(unsortedArr)):
print(sortedArr[i],"-",unsortedArr.index(sortedArr[i]))