首页 > 解决方案 > 关于函数调用的选择排序的一个问题?(python数组)

问题描述

# Selection sort

# find smallest 
def find_min(array):
    min_val = array[0]
    min_val_index = 0
    for i in range(1, len(array)):
        if array[i] < min_val:
            min_val = array[i]
            min_val_index = i
    return min_val_index

# selection sort
def selection_sort(array):
    new_array = []
    for i in range(len(array)):
        min_val = find_min(array)
        new_array.append(array.pop(min_val))
    return new_array

# array = [1,3,6,14,35,3,6]         # ①
# selection_sort(array)             # ②

selection_sort([4,2,5,6,7,9,1,8,3,10])  # ③

问题:</p>

我用①+②代替③时有问题(③是正确的)我不知道它们的区别。我尝试过相同的阵列,但没有帮助。这是错误:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-90-f31e6df2662f> in <module>
     16 
     17 array = [1,3,6,14,35,3,6]
---> 18 selection_sort(array)
     19 # selectSort([4,2,5,6,7,9,1,8,3,10])

<ipython-input-90-f31e6df2662f> in selection_sort(array)
     12     for i in range(len(array)):
     13         min_val = find_min(array)
---> 14         new_array.append(array.pop(min_val))
     15     return new_array
     16 

IndexError: pop index out of range

标签: pythonarrays

解决方案


推荐阅读