zoukankan      html  css  js  c++  java
  • Python 冒泡排序和选择法排序

    1,冒泡排序

    from random import randint
    #定义一个函数 def paixu(lst): #接收传进来的列表的长度 length = len(lst) for i in range(0, length): #迭代的次数是列表的长度 for j in range(0, length-i-1): #迭代的次数是列表长度减去已经冒泡的元素个数减1(减1是为了第j个和j+1个比较) if lst[j] > lst[j+1]:#比较两个相邻元素的大小,并根据需求进行更换位置 lst[j], lst[j+1] = lst[j+1], lst[j] lst = [randint(1, 100) for i in range(0,20)] print('排序前:', lst) paixu(lst) print('排序后', lst)

     冒泡排序的原理:拿相邻的两个元素进行比较,如果满足大于或者小于的条件,就将两个元素进行位置互换,每次大循环过后就会有一个元素到达列表的末尾,然后再进入大循环,再两两比较除了已经冒泡的元素

    举例说明:

    [1,2,3]按倒序排列

    大循环3次:

    第一次:小循环:1和2比较,交换位置:[2,1,3]

            1和3比较,交换位置:[2,3,1]

    第二次:小循环:2和3比较,交换位置:[3,2,1]

    第三次:小循环:for j in range(0,3-2-1)条件不满足直接跳出

    得到最终结果[3,2,1]

    2,选择法排序

    from random import randint
    
    def paixu(lst):
    
        length = len(lst)
    
        for i in range(0,length):
    
            m = i #假设剩余元素中第一个最大或者最小
            
            for j in range(i+1,length):#在剩余元素中迭代
    
                if lst[j] < lst[m]:#如果满足条件就将下标赋值给m
                
                    m = j
        if m != i:#如果m的值有改变,就交换两个元素的位置
    
            lst[i], lst[m] = lst[m], lst[i]

    lst = [randint(1, 100) for i in range(0,20)]
    
    print('排序前:', lst)
    
    paixu(lst)
    
    print('排序后', lst)

     选择法排序原理:假设列表的第一个元素是最大或最小的,拿第一个元素和剩下的比较,如果满足最大或最小的条件,则将两个元素位置交换

    举例说明:

    [3,2,1]按正序排列

    假设第一个元素是最大的

    大循环3次:

    第一次:m=i=0 小循环:3和2比较,条件满足,m=1

                3和1比较,条件满足,m=2

        此时的m和i已经不相等,交换两个元素的位置,得到[1,2,3]

    第二次:m=i=1 小循环:2和3比较,不满足条件,m值不变

        此时m=i,列表不变,得到[1,2,3]

    第三次:m=i=2小循环:for j in range(3,3)条件不满足直接跳出

    得到最终结果[3,2,1]

  • 相关阅读:
    Python中的类(上)
    Django REST Framework API Guide 07
    Django REST Framework API Guide 06
    Django REST Framework API Guide 05
    Django REST Framework API Guide 04
    Django REST Framework API Guide 03
    Django REST Framework API Guide 02
    Django REST Framework API Guide 01
    Django 详解 信号Signal
    Django 详解 中间件Middleware
  • 原文地址:https://www.cnblogs.com/wfc139/p/10178362.html
Copyright © 2011-2022 走看看