为了账号安全,请及时绑定邮箱和手机立即绑定

获取bubblesort python的索引和值

获取bubblesort python的索引和值

潇潇雨雨 2022-12-27 10:17:55
我实现了一个冒泡排序来对数字列表进行排序,我尝试使用枚举来获取索引和值,但由于某种原因 in 不起作用。我期待类似 [(index, value)] 的东西,但输出也可以不同,只要我能看到带有值部分的索引。结果[(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 unsortedArrif __name__ == "__main__":    unsortedArr = [38, 33, 30, 31, 25]    print(sortPercent(unsortedArr))
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

你必须在未排序的 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)]


查看完整回答
反对 回复 2022-12-27
?
精慕HU

TA贡献1845条经验 获得超8个赞

你根本不必使用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


查看完整回答
反对 回复 2022-12-27
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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


查看完整回答
反对 回复 2022-12-27
  • 3 回答
  • 0 关注
  • 57 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信