首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的选择排序实现

python中的选择排序实现
EN

Stack Overflow用户
提问于 2022-07-07 21:55:14
回答 1查看 45关注 0票数 1

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-07 21:59:52

选择排序从当前索引i向前看,因此内部循环应该只在该范围内迭代。其次,index应该在当前的i中初始化,因为它必须指明smallest来自何处:

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72904645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档