当前位置: 首页 > news >正文

题解:蓝桥云课 3226 宝藏排序Ⅱ

【题目来源】

蓝桥云课:1.宝藏排序Ⅱ - 蓝桥云课 (lanqiao.cn)

【题目描述】

在一个神秘的岛屿上,有一支探险队发现了一批宝藏,这批宝藏是以整数数组的形式存在的。每个宝藏上都标有一个数字,代表了其珍贵程度。然而,由于某种神奇的力量,这批宝藏的顺序被打乱了,探险队需要将宝藏按照珍贵程度进行排序,以便更好地研究和保护它们。作为探险队的一员,肖恩需要设计合适的排序算法来将宝藏按照珍贵程度进行从小到大排序。请你帮帮肖恩。

【输入】

输入第一行包括一个数字 \(n\),表示宝藏总共有 \(n\) 个。

输入的第二行包括 \(n\) 个数字, 第 \(i\) 个数字 \(a[i]\) 表示第 \(i\) 个宝藏的珍贵程度。

【输出】

输出 \(n\) 个数字,为对宝藏按照珍贵程度从小到大排序后的数组。

【输入样例】

5
1 5 9 3 7

【输出样例】

1 3 5 7 9

【解题思路】

image

image

【算法标签】

《蓝桥云课 3226 宝藏排序II》 #思维# #排序#

【代码详解】

# 使用快速排序编写(与学而思教的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遍历至rightif a[i]<=a[left]:  # 如果比基准值a[left]要小a[i],a[idx] = a[idx],a[i]  # 与要交换的下标进行交换idx+=1  # idx自增1a[left],a[idx-1] = a[idx-1],a[left]  # 最后将基准值与idx-1进行交换return idx-1  # 返回idx-1,其为middef 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 
http://www.jsqmd.com/news/434638/

相关文章:

  • 符合国标的浸水试验箱厂家怎么选?附国内信誉好的品牌榜单 - 品牌推荐大师1
  • 百联OK卡回收攻略:如何高效处理闲置卡? - 团团收购物卡回收
  • 3 Program Inspections, Walkthroughs, and Reviews
  • 技术日报|WiFi无摄像头穿墙追踪四日称霸日增4419星,阿里AI沙箱OpenSandbox稳居第二
  • 基于STM32L152的智能水表系统设计与实现
  • 2026年发酵饲料行业趋势:绿色化与功能化引领未来 - 速递信息
  • can English adopt to a more civilized grammar/order?
  • 实体商家别只发广告!小红书长期运营逻辑:靠品牌价值留住客人 - Redbook_CD
  • Python大厂面试题:假设有100G的访问日志文件(每行记录一个IP地址),内存只有4G,如何统计出访问次数最多的10个IP?
  • 2026年3月高可复性离子通道检测厂家推荐,精准检测与稳定性能深度解析 - 品牌鉴赏师
  • UE5.7编辑器扩展
  • 2026年 广州工商财税服务推荐榜单:专业代办公司注册、记账报税、地址挂靠及变更注销全流程解析 - 品牌企业推荐师(官方)
  • 2026年工业洗衣机厂家推荐榜单:洗脱机、洗衣房设备,高效耐用与节能创新技术深度解析 - 品牌企业推荐师(官方)
  • 2026年 PVDF管材/管件/阀门厂家实力推荐榜:耐腐蚀、高纯度工业流体输送解决方案优选 - 品牌企业推荐师(官方)
  • 市场调查与分析笔记
  • PHP通过Thrift操作Hbase
  • 一天一个Python库: yarl - 强大且灵活的URL解析与构建工具
  • 题解:蓝桥云课 2096 顺子日期
  • 万里通积分卡回收是否值得?深度分析与实用攻略 - 团团收购物卡回收
  • AI基础建设催涨DRAM,创富国际成为投资科技股首选 - 速递信息
  • 2026年 润滑脂厂家推荐排行榜,工业/合成/特种润滑脂,高温/低温/极压/抗水/齿轮/密封/全氟聚醚润滑脂,专业润滑解决方案供应商精选 - 品牌企业推荐师(官方)
  • 蓝桥杯省赛无忧班(Python组)(配套习题)
  • 聊聊南昌电动伸缩门定制服务,价格合理且靠谱的厂家推荐有哪些? - mypinpai
  • 2026热门一站式资质代理代办机构推荐榜 - 优质品牌商家
  • 2026年3月PCB设计厂家推荐,电路板设计制作优质服务商 - 品牌鉴赏师
  • 北京上门收茅台|京城亚南酒业专业鉴藏,让茅台变现更安心 - 品牌排行榜单
  • 2026年3月北京智能通风柜厂家推荐,物联网智能控制通风设备 - 品牌鉴赏师
  • 解锁论文写作新境界:书匠策AI,你的课程论文智慧伙伴
  • 解锁论文写作新姿势:书匠策AI,你的课程论文智囊团!
  • 万爱通礼品卡回收全流程详解:从选择平台到到账细节 - 团团收购物卡回收