蓝桥杯宝藏排序2题目(快速,归并,桶排序)

快速排序

找一个基准值x(默认是第一个值),把列表分成三部分:小于等于x的数字,x,大于x的数字左半部分和右半部分递归使用该策略

例: a=【3,5,8,1,2,9,4,7,6】

找到基准值3,【1,2】3 【5,8,9,4,7,6】左半部分【1,2】作为一个子问题求解;

右半部分【5,8,9,4,7,6】作为一个子问题求解。

def quick_sort(li,left,right):if left<right:mid=partition(li,left,right)  # 返回下标值,从列表第一个值开始,每次定位在中间值quick_sort(li,left,mid-1)quick_sort(li,mid+1,right)def partition(li,left,right):tmp=li[left]   # 把第一个值存起来while left<right:while left<right and li[right]>=tmp:right-=1   # 往左走一步li[left]=li[right]   # 右边的值写到左边空位上while left<right and li[left]<=tmp:left+=1li[right]=li[left]  # 把左边的值写到右边空位li[left]=tmp  # 把tmp归位return left  # 返回mid值,left,right都行n=int(input())
a=list(map(int,input().split()))
quick_sort(a,0,n-1)
print(' '.join(map(str,a)))

归并排序

数据结构算法--5 归并排序-CSDN博客  非常详细解答

def merge(li, low, mid, high):i = lowj = mid + 1ltmp = []while i <= mid and j <= high:  # 只要两边都有数if li[i] < li[j]:ltmp.append(li[i])i += 1else:ltmp.append(li[j])j += 1# 执行完上个while,肯定有一部分没数了while i <= mid:ltmp.append(li[i])i += 1while j <= high:ltmp.append(li[j])j += 1li[low:high + 1] = ltmpdef merge_sort(li, low, high):  # 这里递归就是左右,最后左右一起if low < high:  # 至少有两个元素,递归mid = (low + high) // 2merge_sort(li, low, mid)  # 等其递归完成返回一个左侧有序列表merge_sort(li, mid + 1, high)  # 等其递归完返回一个右侧有序列表merge(li, low, mid, high)  # 将两个合并n = int(input())
a = list(map(int, input().split()))
merge_sort(a, 0, n - 1)
print(' '.join(map(str,a)))

桶排序

首先将元素分在不同的桶中,在对每个桶中的元素排序。

def buckt_sort(li, n=10, max_num=1000):  # n为桶的个数buckets = [[] for _ in range(n)]  # 创建桶for val in li:i = min(val // (max_num // n), n - 1)  # max_num//n为每个桶内的容量,i表示val放到几号桶buckets[i].append(val)  # 加入到i号桶# 保持桶内的顺序for j in range(len(buckets[i]) - 1, 0, -1):  # 步数为-1,反向冒泡排序if buckets[i][j] < buckets[i][j - 1]:buckets[i][j], buckets[i][j - 1] = buckets[i][j - 1], buckets[i][j]else:breaksotr_list = []for buc in buckets:  # buc为一个列表(每个桶),一维sotr_list.extend(buc)return sotr_listn = int(input())
a = list(map(int, input().split()))
a = buckt_sort(a)
print(' '.join(map(str, a)))

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

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

相关文章

算法基础之最短编辑距离

最短编辑距离 核心思想 &#xff1a; 线性dp 集合定义 &#xff1a; f[i][j]为操作方式的最小值 集合计算 : 三种操作 取最小 ① 删除 : 将a[i]删掉 使ab相同 –> f[i-1][j] 1 f[i][j]② 增添 : 在a[i]后加上一个数 使ab相同 –> f[i][j-1] 1 f[i][j]③ 替换 : 将a[…

聚观早报 |一加Ace 3外观细节;小米14 Ultra电池曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 12月28日消息 一加Ace 3外观细节 小米14 Ultra电池曝光 Lucid正开发电动汽车 英特尔获以色列32亿美元补贴 新能…

用编程解决习题【计算机图像处理】

用编程解决习题【计算机图像处理】 前言版权第三章 03采样量化与像素间关系三种距离计算编程 第六章 06图像的直方图变换均衡化直方图编程规定化直方图编程 第七章 07图像的噪声抑制均值滤波 中值滤波计算编程knn滤波计算编程 第十章 10二值图像的分析贴标签 膨胀 腐蚀编程 最后…

Hadoop安装笔记_单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

代码审计必要性探讨

1、背景 为了保证代码的质量&#xff0c;需要一系列的流程来进行保证&#xff1a; 今天要探讨的是代码审计的必要性。 2、代码审计 代码审计的做法多种多样&#xff0c;我理解必须解决以下问题 &#xff0c;才可能有效&#xff1a; 核心&#xff1a;审计的本质是对比&#…

RabbitMQ 报错:Failed to declare queue(s):[QD, QA, QB]

实在没想到会犯这种低级错误。 回顾整理一下吧&#xff1a; 原因&#xff1a;SpringBoot主配置类默认只会扫描自己所在的包及其子包下面的组件。其他位置的配置不会被扫描。 如果非要使用其他位置&#xff0c;就需要在启动类上面指定新的扫描位置。注意新的扫描位置会覆盖默…

C# 运算符重载

C# 运算符重载 运算符重载运算符重载的实现1. 类中重载的方法必须是public公有的2. 类中定义的重载方法必须是静态的3. 在运算符前需要加上关键字 operator 使用如下可重载和不可重载运算符实例 运算符重载 一提到 - * / %这种类似的运算符都应该很清楚是什么&#xff0c;但是…

Unity网格篇Mesh(二)

Unity网格篇Mesh&#xff08;二&#xff09; 介绍4.生成额外的顶点数据未计算法线计算法线没有法线vs有法线错误的UV坐标Clamping vs warpping正确的UV纹理&#xff0c;平铺&#xff08;1,1&#xff09; vs 平铺&#xff08;2,1&#xff09;凹凸不平的表面&#xff0c;产生了金…

【Java 中锁的种类】

文章目录 一、公平锁和非公平锁二、可重入锁&#xff08;递归锁&#xff09;三、自旋锁四、独占锁(写锁)/共享锁(读锁)/互斥锁 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、公平锁和非公平锁 遵守先来后到的是公平锁&#xff0c;不遵守的是非公…

Mybatis Java API - SqlSessionFactory

SqlSessionFactory​有六个用于创建 ​SqlSession​实例的方法。在选择其中一个方法时&#xff0c;通常会根据以下决策因素&#xff1a; 事务&#xff1a;您是否希望对SqlSession使用事务范围&#xff0c;或者使用自动提交&#xff08;在大多数数据库和/或JDBC驱动程序中通常意…

html学习笔记 标题、段落、换行、列表、超链接、图片、表格

<h1></h1> <p></p> <br>换行&#xff0c;不带线 <hr>换行&#xff0c;带线列表 类似↓ 2 1 无序列表 <ul><li></li><li></li><li></li> </ul>有序列表 <oi><li></l…

C(C++)数组越界但能正常运行?关于数组越界和变量内存地址的一点研究:何时地址连续

C(C)数组越界但能正常运行&#xff1f;关于数组越界和变量内存地址的一点研究&#xff1a;何时地址连续 前言 今天美丽的本科同班同学xyy问了我一个问题&#xff1a; 她出了一道C基础题&#xff1a; 第一行输入一个正整数 n n n&#xff08; 1 ≤ n ≤ 100 1\leq n\leq 100 …

el-table 纵向垂直表头

<template><div class"element-main"><div> Element-ui 官方提供 table Demo</div><el-tableborderstyle"width: 100%":data"tableData"><el-table-column prop"courseName" label"课程信息&qu…

Mysql主从同步原理

文章目录 前言同步原理复制的核心流程写在最后 前言 随着社会的进步大家对服务端应用程序的性能指标有着越来越高的要求&#xff0c;比如响应时间、吞吐率、QPS、TPS等等。基本上大多数系统都会要求响应时间不超过3s&#xff0c;当然对吞吐量和并发量也会根据具体的业务场景进…

C#编程艺术:Fizzler库助您高效爬取www.twitter.com音频

数据是当今数字时代的核心资源&#xff0c;但是从互联网上抓取数据并不容易。本文将教您如何利用C#编程艺术和Fizzler库高效爬取Twitter上的音频数据&#xff0c;让您轻松获取所需信息。 Twitter简介 Twitter是全球最大的社交媒体平台之一&#xff0c;包含丰富的音频资源。用…

从DNS到HTTPS

一、HTTPS定义 超文本传输安全协议&#xff08;HyperText Transfer Protocol Secure&#xff0c;缩写&#xff1a;HTTPS&#xff09;是一种通过计算机网络进行安全通信的传输协议。 HTTPS经由HTTP进行通信&#xff0c;利用SSL/TLS来加密数据包。其主要目的&#xff0c;是提供对…

Android原生实现分段选择

六年前写的一个控件&#xff0c;一直没有时间总结&#xff0c;趁年底不怎么忙&#xff0c;整理一下之前写过的组件。供大家一起参考学习。废话不多说&#xff0c;先上图。 一、效果图 实现思路使用的是radioGroup加radiobutton组合方式。原理就是通过修改RadioButton 的backgr…

初始JVM

目录 一、什么是JVM 二、JVM与字节码 三、Java程序运行机制 四、JVM 的主要组成部分及其作用 一、什么是JVM JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件 二、JVM与字节码 三、Java程序运行机制 首先利用IDE集成开发工具编写Java源代码…

Docker 部署RAP2

1、Github介绍 https://github.com/thx/rap2-delos 2、安装Docker环境 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce systemctl enable…

环形链表、环形链表 II、有效的括号​​​​​​​(leetcode)

目录 一、环形链表 方法&#xff08;快慢指针&#xff09;&#xff1a; 二、环形链表 II 三、有效的括号 一、环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链…