蓝桥杯备考冲刺必刷题(Python) | 3226 宝藏排序II
off999 2024-10-09 14:04 64 浏览 0 评论
学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。
附上汇总贴:蓝桥杯备考冲刺必刷题(Python) | 汇总-CSDN博客
【题目描述】
在一个神秘的岛屿上,有一支探险队发现了一批宝藏,这批宝藏是以整数数组的形式存在的。每个宝藏上都标有一个数字,代表了其珍贵程度。然而,由于某种神奇的力量,这批宝藏的顺序被打乱了,探险队需要将宝藏按照珍贵程度进行排序,以便更好地研究和保护它们。作为探险队的一员,肖恩需要设计合适的排序算法来将宝藏按照珍贵程度进行从小到大排序。请你帮帮肖恩。
【输入】
输入第一行包括一个数字n,表示宝藏总共有n个。
输入的第二行包括n个数字, 第i个数字a[i]表示第i个宝藏的珍贵程度。
数据保证1≤n≤10^5,1≤a[i]≤10^9。
【输出】
输出n个数字,为对宝藏按照珍贵程度从小到大排序后的数组。
【输入样例】
5
1 5 9 3 7【输出样例】
1 3 5 7 9【代码详解】
# 使用快速排序编写(与学而思教的l,r指针不一样)
n = int(input()) # 输入n
a = [int(i) for i in input().split()] # 输入a列表
def partition(a, left, right): # 找到mid值,并将mid左边放比mid小的,mid右边放比mid大的
idx = left+1 # 定义要交换的下标
for i in range(left+1, right+1): # 从left+1遍历至right
if a[i]<=a[left]: # 如果比基准值a[left]要小
a[i],a[idx] = a[idx],a[i] # 与要交换的下标进行交换
idx+=1 # idx自增1
a[left],a[idx-1] = a[idx-1],a[left] # 最后将基准值与idx-1进行交换
return idx-1 # 返回idx-1,其为mid
def quick_sort(a, left, right): # 递归搜索
if left<right: # 保证left小于right,否则就是1个数的情况
mid = partition(a, left, right) # 获得mid值
quick_sort(a, left, mid-1) # 将mid左半边继续递归排序
quick_sort(a, mid+1, right) # 将mid右半边继续递归排序
quick_sort(a, 0, n-1) # 调用快排
for i in range(len(a)): # 输入排序后的a列表
print(a[i], end=" ")# 使用归并排序编写
n = int(input()) # 输入n
a = [int(i) for i in input().split()] # 输入a列表
def Merge(A, B):
result = [] # 定义个空列表保存结果
while len(A)!=0 and len(B)!=0: # 当A列表与B列表同时不为空时
if A[0]<=B[0]: # 进行首元素比较,较小的添加到result列表中,并弹出
result.append(A.pop(0))
else:
result.append(B.pop(0))
result.extend(A) # 最后将剩余的A列表和B列表追加到result中
result.extend(B)
return result # 返回合并后的列表
def MergeSort(A): # 递归方式将A列表进行 归操作
if len(A)<2: # 当长度为0或1时
return A # 返回
mid = len(A)//2 # 获得一半的长度
left = MergeSort(A[:mid]) # 列表左半边进行归操作
right = MergeSort(A[mid:]) # 列表右半边进行归操作
return Merge(left, right) # 将左半边和右半边的列表进行 并操作
a = MergeSort(a) # 对a列表调用归并排序
for i in range(len(a)): # 输入排序后的a列表
print(a[i], end=" ")# 使用桶排序方式编写
n = int(input()) # 输入n
a = [int(i) for i in input().split()] # 输入a列表
def BucketSort(A, bucketcount): # 定义桶排序函数
minvalue, maxvalue = min(A), max(A) # 找到最大值和最小值
bucketsize = (maxvalue-minvalue+1)//bucketcount # 计算桶的大小
res = [[] for i in range(bucketcount+1)] # 初始化bucketcount+1个桶
for x in A: # 遍历A列表中所有元素
idx = (x-minvalue)//bucketsize # 确定其所属的桶的下标
res[idx].append(x) # 加入到对应的桶中
ans = [] # 定义结果数组
for res_x in res: # 遍历每个桶
res_x = sorted(res_x) # 每个桶单独排序
ans += res_x # 再将排序后的结果添加到ans列表中
return ans # 返回ans列表
a = BucketSort(a, min(1000, n)) # 对a列表调用桶排序
for i in range(len(a)): # 输入排序后的a列表
print(a[i], end=" ")【运行结果】
5
1 5 9 3 7
1 3 5 7 9 相关推荐
- qq邮箱网页登陆(qq邮箱网页登陆提示安全风险要验证码)
-
qq邮箱的登录方法:1登录QQ后,正常情况下头像旁边有一个邮箱图标,点击直接登录QQ邮箱2如果没有在主面板上显示的话,可以点击界面管理器添加3在界面管理的右侧,找到QQ邮箱并设置为选状态这样就可直接从...
- 360软件管家有必要安装吗
-
360电脑管家这类软件属于安全软件,其作用是用来防病毒木马。有无安装必要主要看你的电脑使用习惯。比如有的电脑不联网,而且不插外来U盘,这样的电脑几乎与外界隔离,就没有必要安装安全软件。再比如有的电脑经...
- 如何桥接无线路由器并设置上网
-
1、登录副路由器管理界面操作电脑连接到副路由器的LAN口或无线信号(默认为TP-LINK_XXXX),打开浏览器,清空地址栏并输入tplogin.cn或192.168.1.1,设置不少于6位数的登录密...
- 电脑配置搭配(电脑配置搭配表)
-
电脑配置搭配需要考虑多个组件,包括CPU、主板、显卡、内存、硬盘、电源以及散热器等。以下是一些建议和指南:CPU选择:CPU是电脑的心脏,决定了电脑的整体性能。选择CPU时需要考虑核心数、主频、线程数...
- windows7安装步骤简述(win7的安装)
-
运行温度时期的电脑怎么组装?官方已经给出了相关配置:处理器(cpu)最好是主频1GHZ以上,32位或64位处理器,不过目前的处理器几乎都是64位的了,一般双核处理器都在1GHZ以上。 也就是说目前绝...
- 电脑删除的数据怎么恢复(电脑删除数据怎么恢复原状)
-
步骤一:打开电脑上已经装好的Superrecovery软件,直接进入到“向导模式”。首先,大家需要做的就是选择文件所在的位置,例如:需要恢复的数据是在移动存储设备上(如:U盘、SD卡等),直接选择设备...
- 删除数据恢复(删除数据恢复出厂设置)
-
1.在手机上下载手机数据恢复精灵,进入软件之后,选择微信恢复。2.点击开始恢复,选择需要恢复的联系人,等待一会儿,就能看到恢复好的聊天记录。3.可以安装打开互盾安卓恢复大师,手机数据线连接手机后,点击...
- 复制粘贴不了怎么解决(电脑不能复制粘贴了怎么处理)
-
1、查看手机输入法的剪贴板选项,是否有复制的文本,如果有就直接点击就可以直接输入了。2、复制后,长按不出来粘贴键的时候,需要把应用程序关闭掉重新开,重新复制粘贴,或者尝试重启手机。3、可以尝试重新复制...
- u盘被写保护去除步骤(u盘的被写保护怎么解除)
-
U盘被写保护通常是因为存储器故障、病毒感染、文件系统损坏等原因导致的,但可以通过以下几种方法进行解除:1.检查U盘开关:一些U盘可能会有物理上的写保护开关,将其关闭即可解除写保护。2.使用命令行清...
- 电脑蓝屏怎么用u盘重装系统(电脑蓝屏重装系统教程u盘)
-
U盘装系统步骤:1.制作U盘启动盘。这里推荐U启动U盘启动盘制作工具,在网上一搜便是。2.U盘启动盘做好了,我们还需要一个GHOST文件,可以从网上下载一个ghost版的XP/WIN7/WIN8系统,...
-
- erp管理软件(erp管理软件免费版)
-
用友的ERP应该说从3万-3000都有ERP的价格随着企业的规模不同,价格也是不一样的。因为企业规模不同产生的效果也是不一样的,所以用友的产品分T1/T3/T6/U8/U9/NC3万小企业做个财务业务一体化还是勉强可以做的。只...
-
2025-11-11 09:03 off999
- 笔记本启动黑屏怎么回事(笔记本启动黑屏没反应)
-
笔记本开机后黑屏最常遇到的一种情况:因随便点击垃圾网站而导致电脑中脑或受到木马的侵袭,致使电脑系统瘫痪,解决的办法就是重装电脑系统,装好系统后安装查毒软件,定期对电脑进行杀毒全盘扫描,然后平时尽量不要...
- win7系统怎么开wifi热点(win7如何开wifi热点)
-
1、首先确认你的无线网卡开启。在开始菜单中依次找到“所有程序”--“附件”--“命令提示符”,右键“以管理员身份运行”; 2、在“命令提示符”里输入“netshwlans...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
