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

    选择排序分为升序或降序排列
    两两比较大小,找出极值(极大值或极小值),然后放置到最后或最前
    减少了交换次数,提高了效率,性能略好于冒泡排序

    # 降序
    # 第一轮,n个数从左至右,索引从0开始到n-1,两两依次比较,记录最大值的索引,此轮所有数比较完毕,将最大数和索引为0的数交换,如果最大数就是索引0,则不交换
    # 第二轮,从索引1开始比较,找到最大值,将最大值和索引1位置交换,如果它就在索引1位置则不交换。以此类推,每次左边都会固定下一个最大数
    
    t = [1, 9, 8, 5, 6, 7, 4, 3, 2]
    
    for i in range(len(t) - 1):
        # 假设进入循环的第一个数就是最大数
        maxindex = i
        # 两两比较,直到找出最大值,并记录最大值索引
        for j in range(i+1, len(t)):
            if t[j] > t[maxindex]:
                maxindex = j
        # 如果最大值不是当前第一个数,则将最大值与第一个数交换
        if maxindex != i:
            t[i], t[maxindex] = t[maxindex], t[i]
    
    print(t)
    # [9, 8, 7, 6, 5, 4, 3, 2, 1]
    
    # 升序,改变一下判断条件即可
    
    t = [1, 9, 8, 5, 6, 7, 4, 3, 2]
    
    for i in range(len(t) - 1):
        minindex = i
        for j in range(i+1, len(t)):
            if t[j] < t[minindex]:
                minindex = j
        if minindex != i:
            t[i], t[minindex] = t[minindex], t[i]
    
    print(t)
    # [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    参考:
    https://zh.wikipedia.org/wiki/选择排序

  • 相关阅读:
    用Java redis 实现发送手机验证码的功能
    redis之Java Jedis 的使用(使用maven引入)
    设计模式之代理模式
    Redis相关配置
    Redis五大数据类型
    设计模式之享元模式
    设计模式之外观模式
    设计模式之组合模式
    设计模式之装饰者模式
    设计模式之适配器模式
  • 原文地址:https://www.cnblogs.com/keithtt/p/9517130.html
Copyright © 2011-2022 走看看