代码之家  ›  专栏  ›  技术社区  ›  Faisal Khan

python中的选择排序实现

  •  1
  • Faisal Khan  · 技术社区  · 4 年前

    我正在尝试用python实现选择排序,到目前为止我已经完成了。此函数的输出根本没有排序。你认为我做错了什么?当我存储数组中最小元素的索引并交换它时。如果有人能指出我逻辑中的缺陷,这将成为其他人做同样事情的一个例子。

    def selection_sort(array):
        for i in range(len(array)):
            index = 0
            smallest = array[i]
            for j in range(len(array)):
                if array[j] < smallest:
                    smallest = array[j]
                    index = j
            temp = array[i]
            array[i] = smallest
            array[index] = temp
        return array
    
    
    to_sort = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0]
    print(selection_sort(to_sort))
    

    输出: [44, 6, 2, 1, 5, 63, 87, 283, 4, 99, 0]

    2 回复  |  直到 4 年前
        1
  •  4
  •   trincot    4 年前

    选择排序外观 从当前索引 i ,因此内部循环应该只在该范围内迭代。其次 index 应在当前 一、 smallest 来自:

    def selection_sort(array):
        for i in range(len(array)):
            index = i  # corrected
            smallest = array[i]
            for j in range(i + 1, len(array)):  # corrected
                if array[j] < smallest:
                    smallest = array[j]
                    index = j
            temp = array[i]
            array[i] = smallest
            array[index] = temp
        return array