zoukankan      html  css  js  c++  java
  • python算法-选择排序

    选择排序:

    一、语言描述:从一列数字中依次选出最小的放第一位,次小的放第二位,依次类推完成整个排序

    1. 第一次遍历,找到最小的数字,放在第一个位置
    2. 第二次遍历,找到第二大的数字,放在第二个位置
    3. ...... 以此类推,完成整个排序

    固定位置,找元素

    1. 对于n个元素的数组,从第一个位置开始,找到最小,放在第一个位置
    2. 从第二个位置开始,剩下的数组中,找到最小,放在第二个位置
    3. ....
    4. 从第n-1个位置开始,在剩下的数组中,找到最小,放在第n-1个位置

    代码实现:

    # encoding=utf-8

    def selectSort(listx):

        xLen = len(listx)

        for i in xrange(xLen):

            min = i

            for j in xrange(i+1,xLen):

                if listx[min] > listx[j]:

                    min = j

            listx[i],listx[min] = listx[min],listx[i]

        return listx

    if __name__ == '__main__':

        print selectSort([32,34,55,66,5])

    习题一:修改成降序排列

    #enconding = utf-8

    def Select_Sort(lista):

        for i in xrange(len(lista)):

            min = i

            for j in xrange(i+1,len(lista)):

                if (lista[min] < lista[j]):

                    min = j

            lista[min],lista[i] = lista[i],lista[min]

        return lista

    if __name__ == '__main__':

        print Select_Sort([32,14,67,8,21])

    习题2:代码是否存在不必要的比较,是否可以减去,说出原因

    # encoding=utf-8

    def selectSort(listx):

        xLen = len(listx)

        for i in xrange(xLen-1):

            min = i

            for j in xrange(i+1,xLen):

                if listx[min] > listx[j]:

                    min = j

            listx[i],listx[min] = listx[min],listx[i]

        return listx

    if __name__ == '__main__':

        print selectSort([32,34,55,66,5])

    二、计算时间复杂度

    32,34,55,66,5

    第一轮:532,34,55,66   n-1

    第二轮:5,32,34,55,66    n-2

    ...

    第五轮:5,32,34,55,66   1

    1+2+3+... +n-2+ n-1 = n(n-1)/2

    时间复杂度为 O(n^2)

  • 相关阅读:
    mongo备份&恢复
    logstash参数配置
    elasticsearch索引自动清理
    Linux将公网ip映射到局域网ip
    普通用户创建ssh无密码访问
    软考介绍
    安装ffmpeg
    Hadoop实战-Flume之自定义Sink(十九)
    Hadoop实战-Flume之自定义Source(十八)
    Hadoop实战-Flume之Sink Load-balancing(十七)
  • 原文地址:https://www.cnblogs.com/qingqing-919/p/8366722.html
Copyright © 2011-2022 走看看