关于获得交换次数并以简单冒泡排序进行传递的问题

问题描述 投票:0回答:1

同时解决编气泡排序的任务,我遇到了一个问题。因此,我需要计算数组中的交换次数和通过数组的次数。实际上,有输出。在我的代码数组中,排序正确,但计数器工作错误。

step = int(input())
a = list(map(int, input().split()))
passage_number = 0
swap_number = 0
for x in range(step):
    for i in range(step-x-1):
        passage_number += 1
        if a[i] <= a[i+1]:
            a[i], a[i+1] = a[i+1], a[i]
            swap_number += 1

print(passage_number, swap_number)

样本输入(两个字符串),然后输出:

83 1 4 1 5 9 2 6

5 8

((它现在返回诸如“ 21 14”等的smth,取决于变量的位置)

我认为问题出在变量位置不正确,但是大约6个小时我无法解决这个简单的问题。我尝试将变量ib设置在不同的位置,并使用变量“ step”将其过期,但是所有尝试均未成功。如果您能告诉我如何更改我的代码以解决此问题,我将非常感谢(突然,谷歌没有回答btw:D)

python sorting counter bubble-sort
1个回答
0
投票
  1. 您是否按升序排序?如果是,则交换条件应为if a[i] > a[i+1]:,而不是if a[i] <= a[i+1]:
  2. [passage_number += 1需要放在for x in range(step):for i in range(step-x-1):之间
© www.soinside.com 2019 - 2024. All rights reserved.