Python 八大排序算法合集

2023-10-26

1、选择排序

选择排序(升序)【不稳定排序】。

原理:

  1. 给定一个列表,经过第一轮比较后,找到最小值,与第一个位置交换;
  2. 接着对不包括第一个元素的剩下的元素,找到最小值,与第二个位置交换;
  3. 重复该过程,直到进行比较的记录只有一个为止;

以 list = [5, 4, 2, 1, 3] 为例:

第一次排序后: [1, 4, 2, 5, 3]

第二次排序后: [1, 2, 4, 5, 3]

第三次排序后: [1, 2, 3, 5, 4]

第四次排序后: [1, 2, 3, 4, 5]

时间复杂度:O(n**2)

空间复杂度:O(1) 

算法实现: 

def select_sort(lists):
'''
:param lists:
:return: lists
'''

    count = len(lists)
    for i in range(0, count):
        min = i
        for j in range(i + 1, count):
            if lists[min] > lists[j]:
                min = j
        lists[min], lists[i] = lists[i], lists[min]
    return lists

# 调用选择排序
select_sort_list = select_sort(lis)
print(select_sort_list)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 八大排序算法合集 的相关文章

  • Sa-Token – 轻量级权限认证框架!

    本页目录 Sa Token介绍 相关链接 框架应用原理 接入权限框架 sa token Maven依赖 添加配置文件 配置全局异常捕获 开启Sa Token注解鉴权 添加事件监听器 添加角色认证 授权 使用Sa Token Demo 引入R

随机推荐

  • 【微信小程序系列:五】小程序适老化自动适配工具miniprogram-elder-transform---微信老年关怀模式下小程序字体适配微信字体

    1 先言 这个工具我网上基本找不到任何一篇文章说这个miniprogram elder transform的使用的 既然没有 那咱就自己写第一篇 Android字体大小标准默认16px iOS字体大小标准默认17px 个人觉得 微信用户设置
  • 【单目标优化算法】烟花优化算法(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 通
  • IPsec的主模式(Main mode)和积极模式(Aggressive mode)

    主模式和积极模式的信息交换机制不同 主模式有6条消息要交换 2个一组对称 主模式中 第1 2条信息中 双方交换了一些协商信息 如认证算法 hash 加密算法 DH组 认证机制等 第3 4条信息中 双方交换了公钥 在交换了公钥之后 就可以根据
  • 程序员面试什么最重要?

    来自 http www cnblogs com weidagang2046 archive 2013 02 15 on interview html 程序员面试一直是社区乐于讨论的热门话题 我自己从06年实习以来 先后经历了4家软件公司 全
  • 软件工程导论第六版 第五章 总体设计知识点总结

    目录 总体设计概述 目的 任务 设计过程 设计原理 什么是模块 什么是模块化 模块化的优点 模块化和软件成本 逐步求精 什么是逐步求精 Miller法则 抽象 信息隐藏和局部化 什么是信息隐藏 信息隐藏的优点 模块独立 耦合 内聚 内聚程度
  • XML基础入门:关于XML建模

    今天我给大家分享关于XML建模的基础 目录 今天我给大家分享关于XML建模的基础 一 什么是XML建模 就是将XML配置文件以模型的方式 进行输出操作 二 如何将XML建模 步骤 实例对象模型 1 ForwardModel 2 Action
  • 微信小程序支付

    微信小程序支付接口需要的参数timeStamp nonceStr package signType paySign openid是在登录时获取的 只需要调取token里的内容就可以了 点击事件通过cardid来判断与传值
  • 在blender中使用python脚本批量复制平移生成模型

    本案例需求 从基本的建筑单元按照字形平面布局生成综合建筑体 先在blender中用手工制作好一个建筑单元 名称定为 cube 然后在blender中打开一个 Text Editor 编辑窗口 在里面写入python脚本 import bpy
  • ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

    报错内容 ImportError usr lib x86 64 linux gnu libstdc so 6 version GLIBCXX 3 4 29 not found required by home lab118 anaconda
  • 图解SSL/TLS协议

    http www ruanyifeng com blog 2014 09 illustration ssl html 一 SSL协议的握手过程 开始加密通信之前 客户端和服务器首先必须建立连接和交换参数 这个过程叫做握手 handshake
  • 联想小新潮7000安装deepin 系统

    deepin 是国内比较好的开源linux操作系统 安装也比较方便 1 下载ISO镜像文件和深度启动盘制作工具 deepin官网下载ISO 启动盘制作工具下载 2 按照官网的指导 一步一步安装系统 官网指导安装过程 win10进入bios的
  • STL-set-用法

    set集合容器实现了红黑树 Red Black Tree 的平衡二叉检索树的的数据结构 在插入元素时 它会自动调整二叉树的排列 把该元素放到适当的位置 以确保每个子树根节点的键值大于左子树所有节点的键值 而小于右子树所有节点的键值 另外 还
  • 益智小游戏点灯(迷你世界lua脚本)

    点灯游戏是一个十分有趣的智力游戏 有一行N行N列的灯 开始时全部是灭的 当你点击其中一盏灯时他的上下左右 若存在的话 状态全部改变 现在要求你在限定的时间内以最少地步数 将全部的灯点亮 点灯益智游戏 作者 韩永旗 迷你号 247312290
  • Java基础读取本地txt文件

    public class TxtTest public static String txt2String File file StringBuilder result new StringBuilder try BufferedReader
  • python中冒号(:)的作用

    python中冒号 的作用 一开始接触python代码的时候冒号这个存在一直困扰了我很久 说一下我对冒号的理解 冒号 表示的就是一个整体 冒号出现在哪里就代表这个位置对整体 第一 作为整体用于输出 如在plt scatter x 0 x 1
  • 【Leetcode】142. 环形链表 II

    题目描述 142 环形链表 II 给定一个链表 返回链表开始入环的第一个节点 如果链表无环 则返回 null 为了表示给定链表中的环 我们使用整数 pos 来表示链表尾连接到链表中的位置 索引从 0 开始 如果 pos 是 1 则在该链表中
  • 海明校验码

    1 海明码的特点 其中m表示数据位的位数 k表示海明校验码的位数 k位海明校验码一共可以表示种校验信息结果 其中有一种要用来表示没有出错的情况 则其余还剩 1种结果 为了使校验结果可以指出任一位出错的位置 则需要满足以上不等式 2 举例说明
  • 树莓派搭建K8S集群

    最近学习k8s知识 想用树莓派搭建集群 在网找了不少 就发现一篇文章可以搭建成功香橙派4和树莓派4B构建K8S集群实践之一 K8S安装 参考了不少 这里主要记录下遇到的一些问题 参考的文章 是香橙派和树莓派 我这里全是树莓派 所以是树莓派路
  • js判断Android、iOS或浏览器

    第一种 通过判断浏览器的userAgent 用正则来判断是否是ios和Android客户端 代码如下
  • Python 八大排序算法合集

    1 选择排序 选择排序 升序 不稳定排序 原理 给定一个列表 经过第一轮比较后 找到最小值 与第一个位置交换 接着对不包括第一个元素的剩下的元素 找到最小值 与第二个位置交换 重复该过程 直到进行比较的记录只有一个为止 以 list 5 4