【问题标题】:implement selection sort in python? [duplicate]在python中实现选择排序? [复制]
【发布时间】:2016-10-11 05:01:51
【问题描述】:

这似乎是一个简单的问题,但是当我尝试在 Python 中实现选择排序时,我没有得到排序列表。我的实现有问题吗?

def selectionSort (B, annotate=True):
    for i in range(len(A)):
    for j in range(1,len(A)):
        if(A[i] > A [j]):
            A[i], A[j] = A[j], A[i]



A = [5, 4, 3, 2, 1]
A_sorted = selectionSort (A)
print ("Sorted " + str(A) + " = " + str(A_sorted))

A = [10, 7, 8, 40, 2, 5]
A_sorted = selectionSort (A)
print ("Sorted " + str(A) + " = " + str(A_sorted))

这是我得到的:

>>> (executing lines 1 to 74 of "selection_sort_103_v2.py")

Sorted [1, 5, 4, 3, 2] = None

Sorted [2, 40, 10, 8, 7, 5] = None

【问题讨论】:

  • 你不会从你的函数中返回任何东西。此外,您不使用参数 B:所有工作都在全局 A 上完成
  • 请修正缩进
  • 它会这样做吗? - youtube.com/watch?v=Ns4TPTC8whw
  • @wwii: 如果只是,但不是。

标签: python sorting selection-sort


【解决方案1】:

可以试试这个。您的 j 索引也从 1 固定,需要根据 i 变化。

def selectionSort (A, annotate=True):
    for i in range(len(A)):
      for j in range(i+1,len(A)):
          if(A[i] > A [j]):
              A[i], A[j] = A[j], A[i]

    return A    

检查值:

A = [5, 4, 3, 2, 1]
print selectionSort(A)
>>[1, 2, 3, 4, 5]

另外,如果您想同时打印旧数组和新数组,可能需要通过引用旧数组来保存它。

A = [5, 4, 3, 2, 1]
Arr=A[:]
A_sorted=selectionSort(A)
print ("Sorted " + str(Arr) + " = " + str(A_sorted))

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 2021-04-05
    • 2019-02-21
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    相关资源
    最近更新 更多