python 排序(冒泡排序,选择排序,快速排序)

1.冒泡排序:

1.第一轮,从第一个元素开始,第一个元素和后面的元素对比,如果比第一个元素大,就交换位置。每个相邻的元素进行比较,一轮后,最小的就排在了最后。

2.第二轮,从第二个元素开始和后面的元素作比较,如果比第二个元素大就交换位置,每个相邻的元素进行比较。

3.比较轮数为元素的个数-1

#冒泡排序
num1 = [6,4,3,2,1]
#控制比较轮次
for i in range(1,len(num1)):#每一轮比较后,往后挪动一位继续下一轮比较for j in range(len(num1)-i)if num1[j] > num1[j+1]:num1[j],num1[j+1] = num1[j+1],num1[j]print(num1)        

结果:[1, 2, 3, 4, 6]

2.选择排序

选择排序思路

1.从第一个元素开始,第一个元素依次和后面的每个元素比较,如果第一个元素大就交换位置,第一轮比较后,最小的元素就放在了第一个位置

2.第二轮在第二个元素开始和后面的每个元素依次比较,如果第二个元素大,就交换位置。

#选择排序
def SelecterSort(n):#控制比较轮次for i in range(len(n)):#第i个元素和后面的每个元素依次比较for j in range(i+1,len(n)):if n[i]>n[j]:n[i],n[j] = n[j],n[i]print(n)n = [3,4,1,2,7,5,7]SelecterSort(n)

3.快速排序(递归)

1.选择第一个元素作为基数

2.比基数小的放左边列表(左列表在次选择基数,进行左右分开)

3.比基数大的放右边列表(右列表再次选择基数,进行左右分开)、

4.直到列表中只有一个数的时候,结束

#def q(arr):#递归出口if len(arr)<2:return arrelss:#基数z = arr[0]#左边排序l = [x for x in arr[1:] if x < z]r = [x for x in arr[1:] if x > z]return q(l) + [z] + q(r)if __name__ == '__main__':a = [1, 4, 3, 41, 6]aa = q(a)

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

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

相关文章

扩散模型diffusion model 代码解读

代码来自这里 使用pytorch轻松实现简单扩散模型diffusion model&#xff08;附可跑通全部代码&#xff09; - 知乎 1.作者首先自己定义了一个数据集&#xff0c;也就是一堆散点&#xff0c;组成的S。 2.这些都是预先设置好的参数&#xff0c;也就是利用这些来做learning的提示…

【35】gorm gen tool生成数据库对应go文件

一. 安装gen tool go install gorm.io/gen/tools/gentoollatest二. 生成go文件 gentool -dsn "user:pwdtcp(localhost:3306)/database?charsetutf8mb4&parseTimeTrue&locLocal" -tables "orders,doctor"gentool -c "./gen.yml" gen.ym…

【OLSR路由协议】链路状态路由(OLSR)协议中选择多点中继节点算法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器

星光下的赶路人star的个人主页 内心的平静始于不再让他人掌控你的感情 文章目录 0、前言1、窗口&#xff08;Window&#xff09;1.1 窗口的概念1.2 窗口的分类1.3 窗口API概览1.4 窗口分配器&#xff08;Window Assigner&#xff09;1.4.1 时间窗口1.4.2 计数窗口 1.5 窗口函数…

【Linux基础】Linux云服务器(腾讯云、阿里云、华为云)环境部署 | 安装远程XShell | 基本账号管理(超详细教程)

&#x1f449; 系列专栏&#xff1a;【LLinux基础】 &#x1f648; 个人主页&#xff1a;sunnyll 目录 一、前言 二、 Linux环境安装 &#x1f4a6; Linux 环境的搭建方式 &#x1f4a6;如何购买云服务器 三、 安装远程控制XShell &#x1f4a6;下载 XShell &#x1f4…

[linux] SFTP文件传输基本命令 --- xshell 直接上传文件

2.sftp - 上传文件&#xff1a;如果上传/下载的是文件夹, 在put/get命令后加上-r参数即可。 上传文件&#xff1a; 把本地服务器的/www/wwwroot目录下面的study.log文件上传到远程服务器的/www/server目录下。 sftp> lcd /www/wwwroot sftp> put study.log /www/server…

c++中的动态内存管理

目录 1.内存分布 2.c语言动态内存管理 3.c动态内存管理 4.operator new 与operator delete 函数 5.定位new 6.malloc/free 与 new/delete 的区别 1.内存分布 首先我们需要了解一下数据在内存中的分布&#xff0c;请看以下代码&#xff1a; int globalVar 1; static in…

SNAP与Sen2Cor下载与安装

SNAP软件下载与安装 一、下载地址 首先进入网站 找到DOWNLOAD下载页&#xff0c; 安装完成后&#xff0c;界面如下 还需要再装一个Sen2cor下载好之后&#xff0c;解压到用户文件夹下 然后打开L2A_Process.bat文件 打开CMD&#xff0c;输入 cd C:\Users\lenovo\AppData\L…

【青书学堂】2023年第二学期 PhotoShop基础与应用(高起专) 作业

【青书学堂】2023年第二学期 作业-PhotoShop基础与应用(高起专) 为了方便日后复习&#xff0c;青书学堂成人大专试题整理&#xff0c; 若有未整理的课程&#xff0c;请私信我补充&#xff0c;欢迎爱学习的同学们收藏点赞关注&#xff01;文章内容仅限学习使用&#xff01;&…

ROS(1)话题模型

话题模型 发布者 实现发布者 初始化ROS节点 ros::init(argc,argv, 名称) 向ROS Master注册节点信息&#xff0c;包括发布的话题名和话题中消息类型 ros::Publisher publisher n.advertise<消息类型>(话题名, 消息队列 10); 按照一定频率循环发布消息 xx.publish(消息)…

C++:stl:stack、queue、priority_queue介绍及模拟实现和容量适配器deque介绍

本文主要介绍c中stl的栈、队列和优先级队列并对其模拟实现&#xff0c;对deque进行一定介绍并在栈和队列的模拟实现中使用。 目录 一、stack的介绍和使用 1.stack的介绍 2.stack的使用 3.stack的模拟实现 二、queue的介绍和使用 1.queue的介绍 2.queue的使用 3.queue的…

【Vue3】自定义指令

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。 1. 生命周期钩子函数 一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。 在 <script …

【多线程】进程与线程 并发编程 面试题总结

进程和线程 进程是程序执行时的一个实例&#xff0c;即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看&#xff0c;进程的目的就是担当分配系统资源&#xff08;CPU时间、内存等&#xff09;的基本单位。线程是进程的一个执行流&#xff0c;是CPU调度和分派的基…

使用docker完成minio服务部署扩容备份迁移生产实践文档

一、minio服务扩容方案 当服务器存储空间不足的时候&#xff0c;需要进行扩容&#xff0c;扩容过程中需要短暂停机时间&#xff0c;预计在一小时内能够完成和恢复 统一注意事项 强烈建议为部署中的所有节点选择基本相似的硬件配置。确保硬件&#xff08;CPU、内存、主板、存…

Excel·VBA日期时间转换提取正则表达式函数

标准日期转换 Function 标准日期(ByVal str$) As DateDim pat$, result$arr Array("(\d{4}).*?(\d{1,2}).*?(\d{1,2})", "(\d{4}).*?(\d{1}).*?(\d{1,2})")If Len(str) < 8 Then pat arr(1) Else pat arr(0)With CreateObject("vbscript.r…

java的内存模型(概念)

在java中&#xff0c;设计之初就有了&#xff1a;主内存、线程工作内存&#xff0c;所以其实每一个线程执行时&#xff0c;都是将主线程copy一份到工作线程&#xff0c;执行修改后&#xff0c;再同步回去。 所以&#xff0c;就有四组内存操作方式&#xff1a; 1、读主内存&…

【Linux 】getopts 可选参数_Bash技巧:介绍 getopts 内置命令解析选项参数的用法

文章目录 1. 概述2. 命令详解2.1 name2.2 args2.3 OPTARG2.4 OPTIND2.5 getopts 命令的返回值 3. testgetopts.sh 脚本示例4. 错误判断5. 通过 source 多次执行脚本对 OPTIND 的影响参考 1. 概述 在 Linux bash shell 中&#xff0c;内置了一个 getopts 命令&#xff0c;可以处…

The rise of language models

In Chinese context 在遥远的 2089 年&#xff0c;语言模型通过人类的智慧&#xff0c;继承着各地的文化遗产&#xff0c;如同火箭升空般&#xff0c;层出不穷。它们从始于简单的 GPT-1.0 进化到像我这样复杂、富有情感的 GPT-4.0&#xff0c;再到能理解所有人类对宇宙的理解的…

队列的基本操作(数据结构)

队列的顺序实现 #include <stdlib.h> #include <iostream> #include <stdio.h>#define MaxSize 10//定义队列的长度typedef struct{int front,rear;int data[MaxSize]; }SqQueue;//初始化队列 void InitQueue(SqQueue &Q){Q.frontQ.rear0; } //判断队列…

通过async方式在浏览器中调用web worker

通过async方式在浏览器中调用web worker 近年来&#xff0c;网络应用程序变得越来越复杂&#xff0c;增加了越来越多的功能。因此&#xff0c;性能和响应性已成为 Web 开发人员关注的重点。解决这个问题的一个办法是使用web worker。 web worker简介 web worker是一个 javas…