选择排序-python实现

选择排序是一种简单直观的排序算法,它的工作原理如下:

1、 在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置。
2、再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。
3、重复第二步,直到所有元素均排序完毕。

具体步骤描述:
首先,在待排序的一组数中找到最小(或最大)的那个数与第一个位置的数交换;
然后在剩下的数当中找到最小(或最大)的那个数与第二个位置的数交换;
如此循环进行,每次从未排序的元素中找到最小(或最大)的元素,与已排序序列中的对应位置元素交换位置。

def select_sort(li: list):"""选择排序"""for i in range(len(li) - 1):  # 趟数:数组长度 - 1,末尾元素不进行flag = i  # 标识for j in range(i + 1, len(li)):  # 依次作比较的元素索引位置if li[flag] > li[j]:  # 依次将最小值索引赋值给flag,最后会得到最小值的索引,后续直接进行交换赋值flag = jif flag != i:  # 判断是否有比目标元素小的,有则交换赋值li[i], li[flag] = li[flag], li[i]print("第" + str(i) + "趟:", li)if __name__ == '__main__':nums = [2, 3, 1, 7, 0]# nums = [1, 1, 1, 1, 1]print("原数组:", nums)select_sort(nums)

算法的时间复杂度为O(n²),其中n为待排序数组的长度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 安装(二)

Redis安装说明 大多数企业都是基于Linux服务器部署项目,而且Redis官网也没有提供Windows版本的安装包,因此课程中我们会基于Linux系统来安装Redis。 此处选择Linux版本为Centos7。 Redis的官方网站地址:https://redis.io/ Redis的安装 切换…

TCP协议中的传输控制机制图文详解「重传机制」「流量控制」「拥塞控制」

目录 TCP重传机制 超时重传 快速重传 SACK 方法 Duplicate SACK TCP 流量控制 滑动窗口 累积确认 窗口大小由哪一方决定? 接收窗口和发送窗口的大小是相等的吗? 流量控制 窗口关闭的后果 糊涂窗口综合症 TCP拥塞处理 为什么要有拥塞控制呀,不…

如何在WSL中的ubuntu编译Linux内核并且安装使用ebpf?

如何在WSL中的ubuntu编译Linux内核并且安装使用ebpf? 步骤1 编译安装内核获取源码修改配置编译编译成功后配置重启WSL测试 步骤2 安装bcc安装依赖下载bcc,编译测试 环境: wsl2windows 11 步骤1 编译安装内核 去https://kernel.org/找你想要的版本, …

119.设计链表(力扣)

代码解决 class MyLinkedList { public:// 定义链表节点结构体struct LinkedNode {int val;LinkedNode* next;LinkedNode(int val):val(val), next(nullptr){}};MyLinkedList() {dummyhead new LinkedNode(0);size0;}int get(int index) {if (index > (size - 1) || index…

从点云创建 DSM:网格化和可视化实用指南

今天我将向您展示如何从点云创建数字表面模型(DSM)。首先,我们将尝试了解 DSM 是什么,然后我们将进入讨论的更实际部分。 什么是 DSM? DSM 是一个描述表面及其表面所有内容的模型。现在,为了更清楚地了解…

学习JavaEE的日子 Day28 异常,多线程

Day28 1.异常机制 1.1 异常概念 异常是程序在运行期发生的不正常的事件,它会打断指令的正常执行流程。 设计良好的程序应该在异常发生时提供处理这些不正常事件的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果。 ​ Java语言使用异常处理机…

LabVIEW柴油机安保监控系统

LabVIEW柴油机安保监控系统 随着航运业的快速发展,确保船舶柴油机的安全稳定运行变得尤为重要。船舶柴油机故障不仅会导致重大的经济损失,还可能危及人员安全和环境。设计并开发了一套基于LabVIEW平台的柴油机安保监控系统,旨在通过实时监控…

JavaScript数组中会修改原数组的方法有哪些?

前言: 最近跟小伙伴们一起讨论的时候遇见了一个问题:JavaScript中对原数组有影响的数组原生方法有哪些呢?对原数组没有影响的数组原生方法又有哪些呢?我翻阅了很多篇博客,我发现并没有总结特别全面的,我就…

lin_extract_5utr_cds_3utr.py

1.输入文件为基因组文件和gff3文件,输出为5utr和3utr,并且utr已经考虑了正负链和可变剪接情况,意思是如果utr存在可变剪接,输出的文件已经给拼接好了,并且考虑了正负链和拼接方向 #!/usr/bin/env python # -*- coding: utf-8 -*- # python lin_extract_5utr_cds_3utr2.py…

Python数学建模-2.9Matplotlib库

Matplotlib库是Python中一个非常流行的绘图库,它提供了大量的绘图工具,可以生成各种类型的静态、动态、交互式的图表。Matplotlib的设计初衷是为了与NumPy配合使用,从而提供一个强大的数学绘图工具。 1.Matplotlib的主要特点 丰富的图表类型…

Ubuntu18.04显示--有线连接未托管

引用: Ubuntu18.04连不网 报"有线连接未托管"_ubuntu20.04以太网未托管-CSDN博客 正文 虚拟机环境配置: VirtaualBox Ubuntu18.04桌面版 问题现象: Ubuntu18.04虚拟机的桌面上提示“有线连接未托管”,虚拟机不能上网&#xf…

香港银行卡

文章目录 香港银行香港汇丰(HSBC)中银香港其他 在内地办理香港银行卡流程赴港办理香港银行卡流程赴港办理香港银行卡注意事项提前做好旅游规划过关小白条务必保留好预约办理地点地址证明提前下载银行App 虚拟银行ZA Bank(众安银行&#xff09…

已解决redis.clients.jedis.exceptions.JedisBusyException:无法处理命令异常的正确解决方法,亲测有效!!!

已解决redis.clients.jedis.exceptions.JedisBusyException:无法处理命令异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 总结 博主v:XiaoMing_Java 在使用Redis和Jedis客…

抖音视频批量下载软件可导出视频分享链接|手机网页视频提取|视频爬虫采集工具

解锁抖音视频无水印批量下载新姿势! 在快节奏的生活中,抖音作为时下最热门的短视频平台之一,吸引着广大用户的目光。而如何高效地获取喜欢的视频内容成为了许多人关注的焦点。Q:290615413现在,我们推出的抖音视频批量下载软件&…

初始Java篇(JavaSE基础语法)(3)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 目录 方法的使用 方法定义 实参和形参的关系 方法重载 方法签名 递归 方法的使用 方法就是一个代码片段. 类似于 C 语言中的 "函数"…

Android 车联网——CarWatchdogService介绍(二十)

一、简介 CarWatchdogService 是一个安卓汽车平台中的服务,用于监控和管理车载系统的健康状态,它定期监视系统中的各个组件,以确保它们始终处于活动状态,并在出现故障时进行修复或重启。该服务可以帮助确保平台的稳定性和可靠性,防止应用程序挂起或系统崩溃。 主要功能 系…

WordPress Plugin NotificationX插件 SQL注入漏洞复现(CVE-2024-1698)

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。 0x02 漏洞概述 WordPress plugin NotificationX是一个应用插件。2.8.2版本及之前 存在安全漏洞,该…

音频转换器哪个好?5个角度详细测评~

我们常常会用到音频转换器,比如因为平台和设备对某些格式的不兼容,需要进行格式转换;比如有些音频文件可能过大,需要转换为更高效;压缩格式以节省存储空间或加快传输速度;比如调整音频文件的比特率、采样率…

Dijkstra算法

Dijkstra算法用于求无向图或者有向图中起点到各个顶点的最短路径,且边的权值需要为非负数下面这个题就可以用该算法求解 743. 网络延迟时间 有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i]…

【实例】React 组件传值方法: Props、回调函数、Context、路由传参

React原始传值方法 借用状态管理库的传值见下篇文:MobX 和 Redux 【实例】React 状态管理库 MobX Redux 入门及对比 文章目录 React原始传值方法父组件->子组件 props子组件->父组件 回调函数Context路由传值 父组件->子组件 props 父组件可以通过属性&a…