如何按 运行 彻底排序列表的每个元素?

How do I sort the list by running thorough every element?

根据图像,我的代码应该 运行 'k' 12 次,即使列表已经在第 7 步排序。但是,我的代码只运行就实现了6次排序列表。怎么才能按图做运行12次呢?

此外,我必须计算排序 'k' 所需的步骤数,所以我使用了枚举,但输出为 0 0 0 1 1 2。我需要它来给我输出 12。我做错了什么吗?

    def sorting_function(k):
        for index, i in enumerate(range(len(k))):
            for num in range(len(k) - 1):
                if k[num] > k[num+1]:
                    k[num], k[num+1] = k[num+1], k[num]
                    print(index)

    k = [4, 3, 2, 1]
    sorting_function(k)
    print(k)

您的行 print(index) 是缩进的,这意味着它仅在要交换值时打印。

循环迭代 12 次,但不需要在每次循环时都交换值。

我相信它应该像这样工作。

def sorting_function(k):
    for index, i in enumerate(range(len(k))):
        for num in range(len(k) - 1):
            if k[num] > k[num+1]:
                k[num], k[num+1] = k[num+1], k[num]
            print(index)

k = [4, 3, 2, 1]
sorting_function(k)
print(k)

如果你想要输出“12”,创建一个计数器变量并在每个循环中递增它,然后在 print(k) 之后打印它。

编辑:

您可以使用计数器来跟踪内循环运行的总次数,而不是使用枚举:

def sorting_function(k):
  counter = 0
  for i in range(len(k)):
      for num in range(len(k) - 1):
          if k[num] > k[num+1]:
              k[num], k[num+1] = k[num+1], k[num]
          counter=counter+1
          print(counter)

k = [4, 3, 2, 1]
sorting_function(k)
print(k)