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

    核心算法:固定位置,选择元素,即:先从序列中,找到最小的元素,放在第一个位置,之后找到第二小的元素,放在第二个元素,以此类推,就可以完成整个排序工作了。

    代码示例如下:

    x=[6,3,2,7,4,9,5]                            
    xLen = len(x)                                
    for i in range(xLen-1):                      
        min = i                                  
        #遍历完成之后,min就指向了最小元素的下标 
        for j in range(i+1, xLen):               
            if x[min] > x[j]:                    
                min = j                          
        #把将最小的元素值和坐标为i的元素值进行交换
        temp = x[min]                            
        x[min] = x[i]                            
        x[i] = temp                              
                                                 
    print(x)

    返回结果:[2, 3, 4, 5, 6, 7, 9]  

    代码解释:

    内层循环:

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

                if listx[min] > listx[j]:

                    min = j

    i表示外层循环执行时,使用的元素坐标。此代码使用min变量存储的元素坐标对应的值和i坐标后的所有元素进行逐一比较,如果大于,则将min变量存储的坐标改为j。

    外层循环:

    第一次循环找到最小值,第二个循环找到次小值,第三次循环找到第三小的值,以此类推循环结束就将所有值按照升序进行排序了。

    代码逻辑算法过程解析:

    x=[6,3,2,7,4,9,5]
    xLen = len(x)
    n=0
    for i in range(xLen-1):
        min = i
        print("i=%d"%i)
        #遍历完成之后,min就指向了最小元素的下标
        for j in range(i+1, xLen):
            print("j=%d"%j)
            print("%d和%d比较大小"%(x[min],x[j]))
            if x[min] > x[j]:
                min = j
            print("min=%d"% min)
        #把将最小的元素值和坐标为i的元素值进行交换
        temp = x[min]
        x[min] = x[i]
        x[i] = temp
        n+=1
        print ("第%d次排序结果:%s"%(n,x)) 

    print("最后排序结果:%s"%x)  

    代码打印结果:

  • 相关阅读:
    很酷的软件WinDirStat
    [致歉]电信机房网络问题造成无法访问博客园
    [新功能]团队Blog群发邮件
    在SharePoint上建立新闻应用
    Firefox中Javascript使用event对象需要注意的问题
    祝大家春节快乐
    SPS用户管理的问题
    对AreaCollection中的元素进行排序—SharePoint新闻列表WebPart开发手记
    [小改进]给链接增加了描述属性
    Outlook 2003通过ISA 2004无法访问外部邮件(SMTP/POP3)的处理方法
  • 原文地址:https://www.cnblogs.com/ssj0723/p/9518592.html
Copyright © 2011-2022 走看看