首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有内置的选择排序Python

没有内置的选择排序Python
EN

Stack Overflow用户
提问于 2013-04-02 07:50:04
回答 1查看 7.6K关注 0票数 0

我知道python有一堆内置函数,但我尝试过编写选择、排序、最小化内置函数,因为我正在尝试理解算法。我的输出对我的选择排序不正确。感谢任何人的帮助!提前谢谢。

代码语言:javascript
复制
def selection_sort(list):
    for index in range(0, len(list)):
        for i in range(index,len(list)):
            iSmall = index

            if list[iSmall] > list[i]:
                iSmall = i
        list[index], list[iSmall] = list[iSmall], list[index]
    return list  

if __name__ == '__main__':
    print selection_sort([5,2,4,6,1,3,])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-02 07:57:51

iSmall = index不合适。我没有提到所有评论者提到的任何事情,这都是真的(截至本次编辑)。因此,将iSmall = index放在正确的位置:

代码语言:javascript
复制
def selection_sort(list):
    for index in range(0, len(list)):
        iSmall = index
        for i in range(index,len(list)):
            if list[iSmall] > list[i]:
                iSmall = i
        list[index], list[iSmall] = list[iSmall], list[index]
    return list  

if __name__ == '__main__':
    print selection_sort([5,2,4,6,1,3,])

换句话说,您正在寻找最小数字的索引(并尝试将其存储在iSMall中,但在循环for i in range(index,len(list)):的每次迭代中都会将iSmall重置为index。因此iSmall不会正确设置,它总是设置为index,除非在内部循环的最后一次迭代中将其更改为其他值。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15753828

复制
相关文章

相似问题

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