获取bubblesort python的索引和值

2024-10-03 15:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我实现了一个用于对数字列表进行排序的冒泡排序,我尝试使用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)):        
        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))

Tags: namein列表forlenreturnif排序
3条回答

您根本不必使用enumerate(),此函数定义只需简单的代码即可满足您的需要:

def sortPercent(unsortedArr):
    n = len(unsortedArr)
    unsortedArr = [(i, unsortedArr[i]) for i in range(n)]
    for i in range(n-1):        
        for j in range(0, n-i-1):        
            if unsortedArr[j][1] > unsortedArr[j + 1][1]:
                unsortedArr[j],unsortedArr[j+1] = unsortedArr[j+1], unsortedArr[j]
    return unsortedArr
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]))

必须对未排序的arr使用枚举

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)]

相关问题 更多 >