【例题】lanqiao3226 宝藏排序Ⅱ

news2024/12/23 4:47:30

在这里插入图片描述
样例输入

5
1 5 9 3 7

样例输出

1 3 5 7 9

解题思路

这里的n≤10^5,说明O(n ^2)的算法行不通。

基于比较的高效算法和基于数值划分的高效算法全部参考这篇文章

代码

最简单的自带排序

n=int(input())
a=list(map(int,input().split()))

a.sort()
print(' '.join(map(str,a)))

利用桶排序

n=int(input())
a=list(map(int,input().split()))

def bucket_sort(a,bucket_num):
  minval,maxval=min(a),max(a)
  # 桶大小
  bucket_size=(maxval-minval+1)//bucket_num
  bucket=[[] for i in range(bucket_num+1)]
  for x in a:
    bucket_idx=(x-minval)//bucket_size
    bucket[bucket_idx].append(x)
  # 每个桶单独排序
  ans=[]
  for b in bucket:
      b.sort()
      ans+=b
  return ans

a=bucket_sort(a,5)
print(' '.join(map(str,a)))

归并排序

n=int(input())
a=list(map(int,input().split()))

def merge(l,r):
	merged=[]
	l_id=0
	r_id=0
	while l_id<len(l) and r_id<len(r):
		if l[l_id]<=r[r_id]:
			merged.append(l[l_id])
			l_id+=1
		else:
			merged.append(r[r_id])
			r_id+=1
	merged.extend(l[l_id:])
	merged.extend(r[r_id:])
	return merged
def merge_sort(lst):
	if len(lst)<=1:
		return lst
	mid=len(lst)//2
	l=merge_sort(lst[:mid])
	r=merge_sort(lst[mid:])
	return merge(l,r)

a=merge_sort(a)
print(' '.join(map(str,a)))

快速排序

n=int(input())
a=list(map(int,input().split()))

# 求出基准值的位置排序即可
def partition(a,left,right):
    #找基准值,为a[left]
    idx=left+1
    for i in range(left+1,right+1):
        
        if a[i]<=a[left]:
            a[i],a[idx]=a[idx],a[i]
            idx+=1
    #把前半部分的最后一个和基准值对调
    a[left],a[idx-1]=a[idx-1],a[left]
    #返回基准值坐标
    return idx-1
def quicksort(a,left,right):
    if left<right:
        mid=partition(a,left,right)
        #此时a分为三部分:a[left:mid],a[mid],a[mid+1:right+1]
        quicksort(a, left, mid-1)
        quicksort(a,mid+1,right)
        #只需要考虑怎么把当前的问题分成两个子问题           
quicksort(a, 0, n-1)
print(' '.join(map(str,a)))

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

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

相关文章

量化交易backtrader实践(二)_基础加强篇(1)_数据列表准备与主要实践内容

上一篇回顾 上一篇是数据获取篇&#xff0c;在上一篇里&#xff0c;我们初步接触了backtrader的回测逻辑&#xff0c;重点放在了回测的数据获取的问题上&#xff0c;确保了我们在用合适且有效的正规数据在做回测&#xff0c;我们的目的是要通过backtrader深入讨论量化交易的内…

【Linux进程控制】进程等待

目录 进程等待 进程等待是什么&#xff1f; 为什么&#xff1f; 怎么办&#xff1f; wait方法 获取子进程status 多进程的等待问题 waitpid方法 什么是阻塞等待&#xff1f;什么是非阻塞等待&#xff1f; wait/waitpid获取子进程信息原理 进程等待 进程等待是什么&am…

【AI学习】陶哲轩在 2024 年第 65 届国际数学奥林匹克(IMO)的演讲:AI 与数学

陶哲轩在 2024 年第 65 届国际数学奥林匹克关于AI 和数学的演讲&#xff0c;很有意思。陶哲轩的讲话语速太快了&#xff0c;足见其聪明&#xff01; AI用于数学的一些方面&#xff1a; 陶哲轩介绍到刚刚被数学家接受并开始普及的方法&#xff1a;形式化证明辅助工具。 形式化…

API:连接数字世界的隐形纽带

在这个智能手机和应用程序无处不在的时代&#xff0c;你可能听说过API这个术语&#xff0c;但你知道它究竟是什么吗&#xff1f;API&#xff0c;全称为应用程序编程接口&#xff08;Application Programming Interface&#xff09;&#xff0c;是一种让不同的软件和服务之间能够…

MySQL基础篇(黑马程序员2022-01-18)

1 MySQL数据库概述 1.1 MySQL数据库的下载,安装,启动停止 1.2 数据模型 (1)关系型数据库(RDBMS) 概念&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; A. 使用表存储数据&#xff0c;格式统一&#xff0c;便于维护。…

C++11第五弹:线程库 | 互斥锁 | 原子操作

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

蓝牙耳机是入耳式的好还是开放式的好?2024开放式耳机推荐

个人推荐入开放式耳机&#xff0c;戴起来更舒服&#xff0c;主要有以下几方面原因&#xff1a; 减少对耳部的压迫&#xff1a; 不入耳设计&#xff1a;开放式耳机通常不需要插入耳道&#xff0c;避免了对耳道的直接压迫。入耳式耳机的耳塞长时间塞在耳道内&#xff0c;会对耳…

Linux基础---07文件传输

Linux文件传输地图如下&#xff0c;先选取你所需的场景&#xff0c;若你是需要Linux和Linux之间传输文件就查看SCP工具即可。 一.下载网站文件 前提是有网&#xff1a; 检查网络是否畅通命令&#xff1a;ping www.baidu.com&#xff0c;若有持续的返回值就说明网络畅通。Ctr…

前端基础知识(HTML+CSS+JavaScript)

文章目录 一、HTML1.1 HTML 基础&#xff1a;1.1.1 HTML 的概念&#xff1a;1.1.2 认识 HTML 标签&#xff1a;1.1.3 HTML 文件基本结构&#xff1a;1.1.4 标签层次结构&#xff1a; 1.2 HTML 快速入门&#xff1a;1.3 HTML常见标签&#xff1a;1.3.1 标题标签&#xff1a;h1-h…

数据结构-2.顺序表

1.线性表 线性是n个具有相同特性的数据元素的有限序列. 线性表是一种在实际中广泛使用的数据结构,常见的线性表有: 顺序表 , 链表 , 栈 , 队列... 线性表在逻辑上是线性结构, 也就是连续的一条直线 . 但是在物理结构上并不是连续的, 线性表在物理上存储时, 通常以数组和链式结…

5-----RYZ维修工具 操作界面预览与功能操作解析 刷机 解锁 修复参数等等

以上是工具选项功能的界面预览 。通过预览可以看到很多功能选项。此类工具涵盖了很多操作区域。需要根据自己机型的实际需求来操作。根据开发者的描述。此工具有一下功能。包含mtk刷机 分区修复。9008刷机 备份基带efs等等。 高通操作区域 高通修复串码 高通修改写入基带qc…

石化盈科PMO总经理任志婷受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 石化盈科信息技术有限责任公司运营管理部总经理兼PMO总经理任志婷女士受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为“激活关键的少数派——项目经理培养体系的设计实践”。大会…

无人机视角下落水救援检测数据集

无人机视角下落水救援检测数据集&#xff0c;利用无人机快速搜索落水者对增加受害者的生存机会至关重要&#xff0c;该数据集共收集12万帧视频图像&#xff0c;涵盖无人机高度从10m-60m高度&#xff0c;检测包括落水者&#xff08;11万标注量&#xff09;、流木&#xff08;900…

TCP/IP - ICMP

目录 1. 帧格式2. ICMPv4消息类型(Type = 0,Code = 0)回送应答 /(Type = 8,Code = 0)回送请求(Type = 3)目标不可达(Type = 5)重定向(Type = 11)ICMP超时(Type = 12)参数3. ICMPv6消息类型回见TCP/IP 对ICMP协议作介绍 ICMP(Internet Control Message Protocol…

什么是快充协议,最常见的快充协议有哪些

什么是快充协议 随着手机快充的出现大家都知道快充技术但很多人确不知道快充协议&#xff0c;在快充技术里快充协议是必不可少的&#xff0c;那么今天我们就来探讨一下什么是快充协议&#xff1f; 快充协议是一种通过提高充电效率来缩短设备充电时间的电池充电技术。它通过在充…

商淘云九周年 分账系统助力企业合规发展

从2015到2024年&#xff0c;商淘云电商服务品牌已走过整整九个春秋。这九年&#xff0c;是商淘云不断发展壮大&#xff0c;深化品牌建设服务&#xff0c;并取得显著成效的九年&#xff0c;也是见证中国电商迅速崛起的九年。我们回顾九年的风雨历程&#xff0c;感受到企业的成长…

Python计算机视觉 第9章-图像分割

Python计算机视觉 第9章-图像分割 图像分割是将一幅图像分割成有意义区域的过程。区域可以是图像的前景与背景或图像中一些单独的对象。这些区域可以利用一些诸如颜色、边界或近邻相似性等特征进行构建。 9.1 图割&#xff08;Graph Cut&#xff09; 图割&#xff08;Graph…

SOMEIP_ETS_111: SD_Empty_Entries_Array

测试目的&#xff1a; 验证DUT能够忽略声明了条目数组长度为零的SubscribeEventgroup消息。 描述 本测试用例旨在确保DUT在接收到一个Entries数组长度为零的SubscribeEventgroup消息时&#xff0c;能够正确地忽略该消息&#xff0c;不对其进行解释或响应。 测试拓扑&#x…

【机器学习-监督学习】朴素贝叶斯

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科&#xff0c;通过算法和模型让计算机从数据中学习&#xff0c;进行模型训练和优化&#xff0c;做出预测、分类和决策支持。Python成为机器学习的首选语言&#xff0c;…