【问题标题】:Bubble sort with pointers using Python使用 Python 使用指针进行冒泡排序
【发布时间】:2020-02-29 04:32:47
【问题描述】:

代码不适用于某些测试用例。

def bubbleSort(array):
    l = 0
    r = 1
    isSorted = False
    while not isSorted:
        isSorted = True
        while r <= len(array)-1:
            if array[r] < array[l]:
                swap(l, r, array)
                isSorted = False
            l += 1
            r += 1
    return array

def swap(i, j, array):
    array[i], array[j] = array[j], array[i]
    return

谁能帮我解决这个问题?

【问题讨论】:

    标签: python bubble-sort


    【解决方案1】:

    您需要将 r 和 l 重新初始化为 r = 1l = 0 内的 while not isSorted:。否则你只会运行一次完整的循环,因为在第一次迭代结束时,r 已经在 len(array)

    【讨论】:

      【解决方案2】:

      就您的代码而言,每次isSortedFalse 时,您都必须遍历所有元素。因此,每次执行外部while 循环时,您都必须初始化l = 0r = 1


      不需要使用两个计数器变量l & r,可以简单地实现冒泡排序如下:

      def bubbleSort(array):
          isSorted = False
          while not isSorted:
              isSorted = True
              for i in range(1, len(array)):
                  if array[i] < array[i - 1]:
                      swap(i, i - 1, array)
                      isSorted = False
          return array
      
      def swap(i, j, array):
          array[i], array[j] = array[j], array[i]
          return
      

      当你执行&gt;&gt;&gt;print(bubbleSort([10, 2, 1, 3, 2, 6, 25]))

      输出将是:

      [1, 2, 2, 3, 6, 10, 25]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 1970-01-01
        • 2014-03-14
        • 1970-01-01
        相关资源
        最近更新 更多