zoukankan      html  css  js  c++  java
  • python学习_007

    三数排序多种方法

    依次接收用户输入的3个数,排序并打印 升序

    要求使用以下几种方法实现

    1. 转换 int 后,判断大小排序,使用分支结构完成
    2. 使用max函数
    3. 使用列表的 sort 方法
    4. 冒泡排序

    分支

    假设 用户输入 1 2 3 那么可能出现的情况只有 6 种

    123 132 213 231 312 321

    构造列表,使用户输入到列表中

    # 1 使用for 循环
    x=[]
    for i in range(3):
        x.append(input(":"))
    
    # 2  使用 while 循环
    x=[]
    while 3: 
        x.append(input(":"))
    
    
    #python 中支持交换变量值的语法
    x=1
    y=2
    x,y=y,x
    #x  y 就完成了交换
    

    观察那6种情况

    #使用分支结构
    x=[]
    print("请输入三个数:")
    for i in range(3):
        s=int(input(":"))
        x.append(s)
    
    if x[0]>x[1] and x[0]<x[2] :   # 2 1 3
        x[0],x[1]=x[1],x[0]
    elif x[0]<x[2] and x[2]<x[1]:  # 1 3 2 
        x[1],x[2]=x[2],x[1]
    elif x[2]<x[0] and x[0]<x[1]:  # 2  3  1 
        x[0],x[1],x[2]=x[2],x[0],x[1] 
    elif x[2]<x[1] and x[1]<x[0]:  #  3  2  1
        x=x[::-1]
    elif x[1]<x[2] and x[2]<x[0]:  # 3   1   2
        x[0],x[1],x[2]=x[1],x[2],x[0]
    #还有一种可能是不变
    print(x)
    
    #使用分支结构 优化
    x=[]
    print("请输入三个数:")
    for i in range(3):
        x.append(input(":"))
        
    if  x[0]>x[1]:
        if x[0]>x[2]:
            if x[1]>x[2]:
                x[0],x[2]=x[2],x[0]  # 3  1   2
            else:
                x[0],x[1],x[2]=x[1],x[2],x[0]   # 2  3  1 
        else:
            x[0],x[1]=x[1],x[0]   #   2  1  3
    else:
        if x[0]>x[2]:
            x[0],x[1],x[2]=x[2],x[0],x[1]  # 3  1  2
        else:
            if x[1]>x[2]:
                x[1],x[2]=x[2],x[1]   # 1  3  2
               #最后是原本正确顺序进行排列,直接省略
           # else:
            #    x[0],x[1],x[2]=x[0],x[1],x[2]
    #这个最多只会判断三次
    print(x)
    

    max函数

    这个效率感觉不是很高

    # 使用max函数
    x=[]
    print("请输入三个数:")
    while 3:
        x.append(int(input(":")
    flag=[]
    for i in range(3):
        Max=max(x)   #取出最大值
        flag.append(Max) #追加到列表尾部
        x.remove(Max)  #移除原本列表中的最大值
    flag=flag[::-1]  #对列表元素进行逆序
    print(flag)
    

    sort 方法

    使用简单,但是快不快,我就不知道了

    # 使用 列表的 sort 方法实现
    x=[]
    print("请输入三个数:")
    for i in range(3):
        s=int(input(":"))
        x.append(s)
        
    x.sort(key=int)
    print(x)
    

    冒泡排序

    当初第一个排序算法就是学的她, 感觉还行
    属于交换排序 两两比较大小,交换位置
    有n个数,就需要排 n-1 次 每排一次,剩余的最大的数,会到剩余表的末尾,剩余数-1
    我又想起了我学c语言的时候,写的冒泡排序,那是真的狠,直接对着书敲 因为没有代码的经验,但是自从被c虐了之后,感觉简简单单

    # 使用冒泡排序方法
    x=[]
    print("请输入三个数:")
    for i in range(3):
        s=int(input(":"))
        x.append(s)
    length=len(x)
    for i in range(length):  #外层循环length 次
        for j in range(length-1-i): #-1 是为了防止数组访问越界
            if x[j]>x[j+1]:  #当符合这个判断的时候,就行交换数据
                x[j],x[j+1]=x[j+1],x[j]
    print(x)
    

    冒泡排序详解

  • 相关阅读:
    获取父类参数类型工具类
    date工具类
    Ascii工具类
    AES加解密工具类
    请求ip获取工具类
    对象和map互相转换工具类
    HTTP中get、post请求工具类
    时间日期各种工具类
    算法练习题——两数相除
    ETag
  • 原文地址:https://www.cnblogs.com/shenshuoyaoyouguang/p/13061055.html
Copyright © 2011-2022 走看看