蓝桥杯(1):python排序
1 基础
1.1 输出
1.1.1 去掉输出的空格
print("Hello","World",123,sep="+")
print("hello",'world',123,sep='')
print('hello','world',123)
#输出结果
#Hello+World+123
#helloworld123
#hello world 123
1.1.2 以不同的方式结尾
print("Hello","World",123,sep="+",end='apple')
print("hello",'world',123,sep='')
print('hello','world',123)
1.2 输入
input 是字符串类型
1.3 常量变量运算符
int转bool:非0是TRUE,0是FALSE【0和FLASE一一对】
运算符://整除 %取余
关系运算符的结果:TRUE或FALSE!
2 冒泡排序
2.1 算法步骤
运行n-1次,每一次把最大的换到最后
时间复杂度:O(n^2) 空间复杂度:O(1)【没有用到新的空间,是在原来的空间上进行的】,稳定
2.2 代码实现
n = int(input())
a = list(map(int,input().split()))
#循环n-1次,每次获得第i大
for i in range(1,n):#每次比较a[j]和a[j+1]的大小,如果前面大就交换for j in range(0,n-i):if a[j]>a[j+1]:a[j],a[j+1]=a[j+1],a[j]#注意输出的格式要求:这里要求用空格隔开
print(' '.join(map(str,a)))
3 选择排序
3.1 算法步骤
选择一个最小的放在最左边,核心:选择并储存最小值
时间复杂度:O(n^2),空间复杂度o(1),稳定
3.2 具体代码
n = int(input())
a = list(map(int,input().split()))
for i in range(0,n-1):min_value = a[i]min_idx = ifor j in range(0+i,n):if a[j] < min_value:min_value = a[j]min_idx = j#进行交换a[min_idx] = a[i]a[i]= min_value #或者写成 都可以哦!#a[min_idx],a[i] = a[i],a[min_idx]#print(a)
print(' '.join(map(str,a)))
4 插入排序
4.1 算法步骤
相当于扑克牌排序
要做的是在一个有序的数组插入一个数字!
4.2 具体代码
n = int(input())
a = list(map(int,input().split()))
for i in range(1,n):value = a[i]insert_idx = 0 #注意这个的设置比较重要,如果比到最后是最小的,则插入的位置是0for j in range(i-1,-1,-1):if a[j] > value:a[j+1] = a[j] #向后挪else:insert_idx = j+1 #挪不动,说明这个值比a[j]大,则他应该在a[j+1]的位置上!breaka[insert_idx] = value
print(' '.join(map(str,a)))
5 快速排序
5.1 算法步骤
这时3的位置是一定正确的!
核心:怎么选基准,怎么分,怎么递归
5.2 具体代码
#列表a,左端点为left,后端点为right
def partition(a,left,right):stand = a[left]idx = left+1for i in range(left+1,right+1):if a[i]<stand:a[i],a[idx] = a[idx],a[i]idx = idx+1a[idx-1],a[left] = a[left],a[idx-1]#print(a)return idx-1def quicksort(a,left,right):if left<right:mix = partition(a,left,right)quicksort(a,left,mix-1)quicksort(a,mix+1,right)return aa = [5,3,8,1,2,9,4,7,6]
left = 0
right = 8
print(quicksort(a,left,right))
注意递归的规则是:一定要有结束条件!!!!!这就解释left<right存在的必要性!!!要不然就是死循环!!!
6 归并排序
6.1 算法步骤
6.2 具体代码
合并两个有序的列表,实际还是递归!!!
# 归并排序
# 第一步是变编写代码:合并两个有序的列表!!!!
def Merge(A,B):c = []while len(A) !=0 and len(B)!= 0:if A[0] <= B[0]:c.append(A[0])A.pop(0)else:c.append(B[0])B.pop(0)c.extend(A)c.extend(B)return cdef Mergesort(a):if len(a) < 2:return aelse:mix = len(a) //2left = Mergesort(a[0:mix])right = Mergesort(a[mix:len(a)])a = Merge(left,right)return an = int(input())
a = list(map(int,input().split()))
print(Mergesort(a))
7 桶排序
7.1 算法步骤
为了缩小问题规模!!!
7.2 具体代码
代码的最核心:分桶!!!
找到最大值和最小值,除以总的桶数
def Bucket_sort(a,bucketcount):minvalue, maxvalue = min(a),max(a)bucketsize = (maxvalue-minvalue+1) // bucketcount #均匀的分开res = [[] for i in range(bucketcount+1)]#要多一个桶 放不能整除的那些数字#把所有的元素放在对应的桶里for i in a:idx = (i-minvalue) // bucketsizeres[idx].append(i)ans = []for i in res:i.sort()ans = ans + ireturn ansn = int(input())
a = list(map(int, input().split()))
print(Bucket_sort(a,5))
相关文章:

蓝桥杯(1):python排序
1 基础 1.1 输出 1.1.1 去掉输出的空格 print("Hello","World",123,sep"") print("hello",world,123,sep) print(hello,world,123) #输出结果 #HelloWorld123 #helloworld123 #hello world 123 1.1.2 以不同的方式结尾 print(&quo…...

SpringMVC请求、响应和拦截器的使用
SpringMVC请求 RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 1. 作用在类上:第一级的访问目录 2. 作用在方法上:第二级的访问目录 3. 细节:路径可以不编写…...

基于springboot+layui仓库管理系统设计和实现
基于 java springbootlayui仓库管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取…...

【开源-土拨鼠充电系统】鸿蒙 HarmonyOS 4.0+微信小程序+云平台
本人自己开发的开源项目:土拨鼠充电系统 ✍GitHub开源项目地址👉:https://github.com/cheinlu/groundhog-charging-system ✍Gitee开源项目地址👉:https://gitee.com/cheinlu/groundhog-charging-system ✨踩坑不易&am…...

[抽象]工厂模式([Abstract] Factory)——创建型模式
[抽象]工厂模式——创建型模式 什么是抽象工厂? 抽象工厂模式是一种创建型设计模式,让你能够保证在客户端程序中创建一系列有依赖的对象组时,无需关心这些对象的类型。 具体来说: 对象的创建与使用分离: 抽象工厂模…...

QT网络编程之实现UDP广播发送和接收
推荐一个不错的人工智能学习网站,通俗易懂,内容全面,作为入门科普和学习提升都不错,分享一下给大家:前言https://www.captainbed.cn/ai 一.UDP通信 1.QT中实现UDP通信主要用到了以下类:QUdpSocket、QHost…...

SSL VPN基础原理
目录 SSL ---安全传输协议(安全套接层)---TLS ----传输层安全协议 SSL的工作原理 SSL会话建立的过程 编辑 数据传输过程中的封装示意图 无客户端认证的过程 有客户端认证的过程 SSL VPN的核心技术---虚拟网关技术 服务器验证的点: 资源…...
深入理解FTP协议:文件传输的桥梁
深入理解FTP协议:文件传输的桥梁 在数字化时代,文件传输协议(FTP)是互联网上进行文件交换的重要手段。FTP允许用户在不同的计算机之间传输文件,无论是上传还是下载,都提供了一种稳定且高效的方式。本文将深…...

数字化转型导师坚鹏:金融机构数字化运营
金融机构数字化运营 课程背景: 很多金融机构存在以下问题: 不清楚数字化运营对金融机构发展有什么影响? 不知道如何提升金融机构数字化运营能力? 不知道金融机构如何开展数字化运营工作? 课程特色:…...

一、C#冒泡排序算法
一、C#冒泡排序算法 简介 冒泡排序算法是一种基础的排序算法,它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾。 实现原理 冒泡排序是一种简单的排序算法,其…...
docker部署mysql5
1. 进入面板 2. 新建挂载文件夹 新建三个文件夹: mkdir -p /docker/mysql5/config && mkdir -p /docker/mysql5/data && mkdir -p /docker/mysql5/logsconfig:存放mysql配置data:存放mysql数据logs:存放mysql记录日志 3.…...

Github 2024-03-15 Java开源项目日报 Top10
根据Github Trendings的统计,今日(2024-03-15统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9非开发语言项目1TypeScript项目1《Hello 算法》:动画图解、一键运行的数据结构与算法教程 创建周期:476 天协议类型:OtherStar数量…...

SQLiteC/C++接口详细介绍之sqlite3类(六)
快速前往文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(五) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(七) 19. sqlite3_changes与sqlite3_changes64 是SQLite中用…...
编码技巧:多条件判断拼接字符串
在写代码业务逻辑的时候,有时候需求稍微变化一下都让代码变的很麻烦,如果只在现有代码基础上硬改,可能会让可读性降低,本文通过一个例子来演示字符串拼接的变化。 一开始的业务逻辑比较简单,是固定条件加一个需要判断…...

气压计LPS25HB开发(1)----轮询获取气压计数据
气压计LPS25HB开发----1.轮询获取气压计数据 概述视频教学样品申请源码下载产品特性通信模式速率生成STM32CUBEMX串口配置IIC配置SA0地址设置串口重定向参考程序SA0设置模块地址获取ID复位操作BDU设置设置速率轮询读取数据演示 概述 本文将介绍如何使用 LPS25HB 传感器来读取数…...
这个不需要吗 HttpServletRequest req
这个不需要吗 HttpServletRequest req 在这个特定场景下,您在OnlineStudentFeignService接口中确实不需要直接使用HttpServletRequest对象。因为Feign是一个声明式的HTTP客户端,它的设计目标是简化服务间的远程调用,它并不直接处理原始的HTT…...

【算法与数据结构】深入解析二叉树(一)
文章目录 📝数概念及结构🌠 树的概念🌉树的表示🌠 树在实际中的运用(表示文件系统的目录树结构) 🌉二叉树概念及结构🌠概念🌉数据结构中的二叉树🌠特殊的二叉…...

深入浅出:Objective-C中使用MWFeedParser下载豆瓣RSS
摘要 本文旨在介绍如何在Objective-C中使用MWFeedParser库下载豆瓣RSS内容,同时展示如何通过爬虫代理IP技术和多线程提高爬虫的效率和安全性。 背景 随着信息量的激增,爬虫技术成为了获取和处理大量网络数据的重要手段。Objective-C作为一种成熟的编程…...

Java日志框架Log4j 2详解
有时希望能够以文件的形式记录执行过程中出现的异常信息,甚至记录程序正常运行的关键步骤,以便日后查看,那么该如何处理呢? 答:显然,可以自行编程实现这个需求,但是,从更注重效率和性能的方面考虑&#x…...

【剪枝实战】使用VGGNet训练、稀疏训练、剪枝、微调等,剪枝出只有3M的模型
摘要 本次剪枝实战是基于下面这篇论文去复现的,主要是实现对BN层的γ/gamma进行剪枝操作,本文用到的代码和数据集都可以在我的资源中免费下载到。 相关论文:Learning Efficient Convolutional Networks through Network Slimming (ICCV 2017…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...

Ubuntu系统多网卡多相机IP设置方法
目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机,交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息,系统版本:Ubuntu22.04.5 LTS;内核版本…...

篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...