zoukankan      html  css  js  c++  java
  • py_选择排序

    # 选择排序
    # 一趟排序记录最小值,放到第一个位置
    #再一趟排序记录记录列表无序区最小的数,放到第二个位置
    #....
    # 关键点:有序区、无序区、无序区最小值
    #方法一
    def select_Sort1(li):
        li2 = []
        for i in range(len(li)):
            min_li = min(li)        #此方法不建议,生成两个数组占用内存 
            li2.append(min_li)      #其中append和remove 都是大于O(1)
            li.remove(min_li)
        return li2
    
    li = [2,1,3,4,7,9,5,6]
    print(select_Sort1(li))
    """
    [1, 2, 3, 4, 5, 6, 7, 9]
    """
    #方法二  复杂度 O(n^2)
    def select_Sort2(li):
        for i in range(len(li) -1): # i代表第几趟 
            min_loc = i             #定义无序区最小数位置
            for j in range(i+1,len(li)): # 第一个数就不用跟自己比,故i+1
                if li[j] < li[min_loc]:
                    min_loc = j
            li[i],li[min_loc] = li[min_loc],li[i]
            print(li)
    li = [2,1,3,4,7,9,5,6]
    print("方法二:原列表:"+str(li))
    select_Sort2(li)      
    """
    方法二:原列表:[2, 1, 3, 4, 7, 9, 5, 6]
    [1, 2, 3, 4, 7, 9, 5, 6]
    [1, 2, 3, 4, 7, 9, 5, 6]
    [1, 2, 3, 4, 7, 9, 5, 6]
    [1, 2, 3, 4, 7, 9, 5, 6]
    [1, 2, 3, 4, 5, 9, 7, 6]
    [1, 2, 3, 4, 5, 6, 7, 9]
    [1, 2, 3, 4, 5, 6, 7, 9]
    
    """ 
  • 相关阅读:
    8.20 附加赛3
    8.22 附加赛4
    Codeforces Round #505 (Div 1 + Div 2) (A~D)
    8.9 附加赛2
    8.10 正睿暑期集训营 Day7
    8.9 正睿暑期集训营 Day6
    8.8 正睿暑期集训营 Day5
    8.7 正睿暑期集训营 Day4
    8.6 正睿暑期集训营 Day3
    8.5 正睿暑期集训营 Day2
  • 原文地址:https://www.cnblogs.com/c-jw/p/13806707.html
Copyright © 2011-2022 走看看