美文网首页
选择排序

选择排序

作者: 张义飞 | 来源:发表于2018-01-18 07:27 被阅读0次

    选择排序

    前面我们的二分查找,输入的数组是一个有序的数组,所以我们该如何得到一个有序的数组哪?排序算法有很多种我们这次来研究一下选择排序。

    输入,输出

    输入一个无序数组,输出一个有序数组

    设计与实现

    设计

    基本思路:我们假设数组只有一个元素,那我们就直接返回数组,如果数组大于两个元素,我们才会进行排序。我们可以从数组中找出最小的,然后把它加入一个新的数组,然后把它从老的数组中删除,这样等到老数组为空了,那么新数组也就是一个有序的数组了。

    选择排序.jpg

    实现

    def findSmall(list):
        minNumber = list[0]
        for item in list:
            if item < minNumber:
                minNumber = item
    
        return list.index(minNumber)
    
    
    def selectionSort(list):
        if len(list) <= 1:
            return list
        newArray = []
        for i in range(len(list)):
            minNumberIndex = findSmall(list)
            newArray.append(list.pop(minNumberIndex))
        return newArray
    
    print selectionSort([3])
    

    关键点

    • 我们写了一个辅助函数来查找最小值
    • 把找到的最小值从老数组中删除,加入到新数组,返回新数组
    • 算法复杂度为n的平方

    相关文章

      网友评论

          本文标题:选择排序

          本文链接:https://www.haomeiwen.com/subject/oepmoxtx.html