• 数据结构与算法(排序)


    1.冒泡排序

    def bubble_sort(list):
        for i in range(len(list)-1):
            for j in range(len(list)-i-1):
                if list[j] > list[j+1]:
                    list[j], list[j+1] = list[j+1], list[j]     # 如果前一个数比后一个数大,则交换位置

      改进:

    def bubble_sort(list):
        for i in range(len(list)-1):
            opt = True  # 设置一个值,当下面发生交换时,改变该值,当没有发生交换时,说明裂变顺序已经排好了
            for j in range(len(list)-i-1):
                if list[j] > list[j+1]:
                    list[j], list[j+1] = list[j+1], list[j]     # 如果前一个数比后一个数大,则交换位置
                    opt = False
            if not opt:     # 当没有发生交换时,opt 的值没有被改变,则执行这个语句 结束循环
                return

     2.选择排序

    def select_sort(list):
        for i in range(len(list)-1):    # 排序列表的长度-1次
            min_val = i     # 先假设列表的最小的值的下标为i
            for j in range(i+1, len(list)):     # 遍历列表的无序区,将假设的最小的值和无序区的值依次对比
                if list[j] < list[min_val]:     # 如果无序区的值小于假设的最小值,则将小的值的下边赋值给min_val,
                    min_val = j                 # 遍历一遍后,得到最小值的下标。
            list[i], list[min_val] = list[min_val], list[i]     # 将列表无序区的第一个数和最小的数互换
    
    select_sort(list)

    3.插入排序

    list = [9, 6, 2, 9, 6, 5, 8, 3, 1]
    def insert_sorf(list):
        for i in range(1, len(list)):
            tmp = list[i]   # 抽到的牌
            j = i-1   # 手里的最右边的牌的下标
            while j >= 0 and list[j] > tmp:  # 当手里的牌大于抽到的牌时,
                list[j+1] = list[j]          # 将手里的牌的往后移动
                j = j-1                      # 同时将手里的牌比抽到的牌的大的下标往前移,将抽到的牌和前面的牌再比较
            list[j+1] = tmp     # 当手里的牌不大于抽到的牌时,将抽到的牌赋值给手里牌的右边,即手里牌的下标加1的位置
  • 相关阅读:
    【IdentityServer4文档】- 整体情况
    【IdentityServer4文档】- 欢迎来到 IdentityServer4 (ASP.NET Core 3.x)
    证券相关基础概念
    [基于NetCore的简单博客系统]-登录
    JAVA mysql数据库 配置
    简单验证码识别及登陆并下载页面
    Java 无法初始化Connection的问题
    MUI scroll 定位问题
    CentOS7 安装 MySql
    ASP.NET CORE 2.0 文档中文正式版已经出来了
  • 原文地址:https://www.cnblogs.com/wangdianchao/p/13289532.html
Copyright © 2020-2023  润新知