Python中的选择排序不会产生任何输出

Python中的选择排序不会产生任何输出,python,algorithm,pycharm,selection-sort,Python,Algorithm,Pycharm,Selection Sort,我试图在python中运行选择排序,这是我正在使用的代码 def main(list): input_array = [12, 9, 13, 7, 3, 19, 6, 5] output_array = selection_sort(input_array) print(output_array) def selection_sort(param): for i in range(0, (len(param) - 1)): min = i

我试图在python中运行选择排序,这是我正在使用的代码

def main(list):
    input_array = [12, 9, 13, 7, 3, 19, 6, 5]
    output_array = selection_sort(input_array)
    print(output_array)


def selection_sort(param):

    for i in range(0, (len(param) - 1)):
        min = i
        for j in range(i + 1, len(param)):
            if param[min] < param[j]:
                min = j

            if min != i:
                temp = param[i]
                param[i] = param[min]
                param[min] = temp
    return param
如果有什么影响的话,我用PyCharm作为想法。

  • 输入数组应该是一个列表,您正在将其设置为一个集合

    input_array = [12, 9, 13, 7, 3, 19, 6, 5]
    
  • 不要使用变量名列表,它是内置列表的名称

  • 不要将min用作变量名,它是内置函数min的名称
  • 这里的主要方法不需要参数
  • 您没有调用main方法,请在定义
    selection\u sort
  • 换线

    minimum, i, j, temp = 0
    


这将按升序排序:

def selection_sort(my_list):
    for j in range(len(my_list)):
        for i in range(j, len(my_list)):
            if my_list[i] < my_list[j]:
                my_list[j], my_list[i] = my_list[i], my_list[j]
    return my_list



def main():
    input_array = [12, 9, 13, 7, 3, 19, 6, 5]
    output_array = selection_sort(input_array)
    print(output_array)
[3, 5, 6, 7, 9, 12, 13, 19]
def selection_sort(我的_列表):
对于范围内的j(len(my_列表)):
对于范围内的i(j,len(我的列表)):
如果我的清单[i]<我的清单[j]:
我的清单[j],我的清单[i]=我的清单[i],我的清单[j]
返回我的列表
def main():
输入_数组=[12,9,13,7,3,19,6,5]
输出数组=选择数组(输入数组)
打印(输出数组)
[3, 5, 6, 7, 9, 12, 13, 19]

min,i,j,temp=0
如何工作?您还跟踪了内置的
列表
和内置的
min
我已经编辑了代码。这段代码似乎有效,但我有几个问题,第一个是输出数组最大,第二个是为什么颠倒了函数的顺序,最后为什么调用main()。我对python有点陌生。嘿,发条机。您也可以将
main
的定义放在
selection\u sort
的定义之前,只要您在脚本末尾仍然发出对
main
的调用。最后我显式地调用了
main
,因为
main
只是一个函数,如果希望它运行,就需要调用它。这种行为与Java不同,Java自动调用main方法。结果的元素是按降序排列的,因为您是这样编码的:)再看看您的逻辑,或者使用
list(reversed(output_array))
反转列表。
minimum, i, j, temp = 0, 0, 0, 0
def selection_sort(my_list):
    for j in range(len(my_list)):
        for i in range(j, len(my_list)):
            if my_list[i] < my_list[j]:
                my_list[j], my_list[i] = my_list[i], my_list[j]
    return my_list



def main():
    input_array = [12, 9, 13, 7, 3, 19, 6, 5]
    output_array = selection_sort(input_array)
    print(output_array)
[3, 5, 6, 7, 9, 12, 13, 19]